2016-05-02 14 views
-1

Ich habe Quiz-Tabelle, die in Bild gezeigt wird. quiz tableBedingung mit linker Join-Tabelle in Mysql

und Quizergebnis Historientabelle wie user_quiz_results table

ich Abfrage zwischen diesen beiden Join-Tabelle schreiben links. Meine Frage ist wie:

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 

Dieses Abfrageergebnis all Quiz-Tabellendaten und zugehörige user_quiz_results Tabelle geben.

Wenn ich Abfrage unter Verwendung der Bedingung für linke Join-Tabelle wie Benutzerid = 90 schreibe, bekomme ich keine Daten.

Ich möchte alle Daten des Quiz und wenn Tabelle Ergebnis für userid = 90 erhalten Daten aus Tabelle user_quiz_history.avg (score).

+0

Bitte Text anstelle von Screenshots posten. – e4c5

+0

Fügen Sie die Bedingung in die entsprechende ON-Klausel – Strawberry

+0

ein, fügen Sie Tabellenschema mit einigen Beispieldaten hinzu, damit andere Ihre Situation schnell verstehen können. –

Antwort

0

Schreibbedingung für linke Join-Klausel.

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