2016-05-02 9 views
-1

У меня есть таблица викторины, которая показана на изображении. quiz tableУсловие с левой таблицей join в mysql

и результат викторины История таблицы как user_quiz_results table

я пишу оставил запрос с соединением между этими двумя таблицы. Мой запрос как:

select q.* 
     , c.name as catname 
     , qrh.q_complete 
     , q s.test_type 
     , qs.questionid 
     , sum(qrh.score) as score1 
     , sum(qrh.total_questions) as tot_que 
    from categories c 
     , quiz q 
    left 
    join user_quiz_results_history qrh 
     on qrh.quiz_id = q.quizid 
    left 
    join quizquestions qq 
     on qq.quizid = q.quizid 
    left 
    join questions qs 
     on qs.subcatid = qq.subjectid 
    where c.catid = q.catid 
    AND q.catid = 1 
    AND q.status = 'Active' 
    AND q.enddate >= '2016-05-02' 
    group 
     by q.quizid 

Этот запрос даст результата все данные викторины таблицы и таблицы связанных user_quiz_results.

Если я пишу запрос, используя условие для таблицы левого соединения, например userid = 90, я не получаю ни одного из данных.

Я хочу, чтобы все данные викторины и таблица имели результат для userid = 90 получить данные из таблицы user_quiz_history.avg (оценка).

+0

Пожалуйста, разместите текст вместо скриншотов. – e4c5

+0

Включить условие в соответствующее предложение ON – Strawberry

+0

добавить схему таблицы с некоторыми примерными данными, это поможет другим понять вашу ситуацию быстро. –

ответ

0

Записать условие в положение левого соединения.

select q.* , qrh.q_complete , sum(qrh.score) as score1 , sum(qrh.total_questions) as tot_que from categories c , quiz q left join user_quiz_results_history qrh on qrh.quiz_id = q.quizid AND qrh.userid=84 where q.catid = 1 AND q.status = 'Active' AND q.enddate >= '2016-05-02' group by q.quizid 
Смежные вопросы