Re: Re: LEFT JOIN query help

From: Date: Mon, 19 Jul 2010 05:51:51 +0000
Subject: Re: Re: LEFT JOIN query help
References: 1 2 3  Groups: php.db 
Request: Send a blank email to php-db+get-47271@lists.php.net to get a copy of this message
Thanks. That answer worked. Ron -- -----Original Message----- From: Kesavan Rengarajan <k7@trk7.com> To: ron.piggott@actsministries.org <ron.piggott@actsministries.org> Cc: ron.piggott@actsministries.org <ron.piggott@actsministries.org>, php-db@lists.php.net <php-db@lists.php.net> Subject: Re: [PHP-DB] Re: LEFT JOIN query help Date: Mon, 19 Jul 2010 08:21:00 +1000 Change 'NOT LIKE' to 'NOT IN' in the outer query. Sent from my iPhone On 19/07/2010, at 4:15 AM, "Ron Piggott" <ron.piggott@actsministries.org> wrote: > > I am still working on this query and wondering if I should be taking a > different approach --- to use a sub query to figure out which questions > have been answered and then an "outter" query to not select one of them. > > But mySQL is giving me the error that the subquery has more than 1 row --- > I have answered 2 questions. > > Would someone be able to clean up this query / sub query combination? > > > > SELECT verse_of_the_day_Bible_trivia.reference FROM > verse_of_the_day_Bible_trivia > > WHERE > > verse_of_the_day_Bible_trivia.reference NOT LIKE > > ( > > SELECT verse_of_the_day_Bible_trivia.reference > > FROM verse_of_the_day_Bible_trivia > LEFT JOIN my_Bible_trivia_knowledge_questions_answered ON > my_Bible_trivia_knowledge_questions_answered.verse_of_the_day_Bible_trivia_reference > = verse_of_the_day_Bible_trivia.reference > LEFT JOIN my_Bible_trivia_knowledge_profile ON > my_Bible_trivia_knowledge_profile.reference = > my_Bible_trivia_knowledge_questions_answered.my_Bible_trivia_knowledge_profile_reference > > > WHERE > > verse_of_the_day_Bible_trivia.live =1 AND > my_Bible_trivia_knowledge_questions_answered.my_Bible_trivia_knowledge_profile_reference > = $user_reference > > ) > > AND verse_of_the_day_Bible_trivia.live =1 > > ORDER BY RAND() LIMIT 1 > >> >> I am writing a Bible trivia application. I am trying to write the mySQL >> query that will select the next question reference number and the current >> question is answered. The value I want to retrieve It is in the field: >> verse_of_the_day_Bible_trivia.reference >> >> I don't think I have my LEFT JOIN's right. When I take away the "WHERE" >> clause only the records the user has answered are selected. Then they are >> being eliminated with the WHERE clause. >> >> I am hoping the results join the 3 tables together --- really wide --- >> with the user profile on the left hand side and then the question is the >> middle and if the user has answered it then this record on the right hand >> side, otherwise the fields are NULL. Does this make sense? Ron >> >> SELECT verse_of_the_day_Bible_trivia.reference FROM >> >> ( my_Bible_trivia_knowledge_profile LEFT JOIN >> my_Bible_trivia_knowledge_questions_answered ON >> my_Bible_trivia_knowledge_profile.reference = >> my_Bible_trivia_knowledge_questions_answered.my_Bible_trivia_knowledge_profile_reference >> ) >> >> LEFT JOIN >> >> verse_of_the_day_Bible_trivia ON >> verse_of_the_day_Bible_trivia.reference = >> my_Bible_trivia_knowledge_questions_answered.verse_of_the_day_Bible_trivia_reference >> >> WHERE >> >> my_Bible_trivia_knowledge_questions_answered.my_Bible_trivia_knowledge_profile_reference >> <> $user_reference AND >> my_Bible_trivia_knowledge_questions_answered.score IS NULL AND >> verse_of_the_day_Bible_trivia.live =1 >> >> ORDER BY RAND() LIMIT 1 >> > > > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.db (#47271) next »