Re: Re: LEFT JOIN query help
| From: | Kesavan Rengarajan | Date: | Sun, 18 Jul 2010 22:21:00 +0000 |
| Subject: | Re: Re: LEFT JOIN query help | ||
| References: | 1 2 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-47269@lists.php.net to get a copy of this message | ||
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.ˆpøšÒ¢
> ’s;KKù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_answered5�Ô,ø7ˆ3�š²
> îmÆ.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¸)¡#&Kß W
>> ñ].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
>