2017-01-29 4 views
-3

Ich habe 4 Tabellen; Kredite (hat 'user_id'), Benutzer (hat 'student_ID' und 'teacher_ID'), Schüler und Lehrer.MySQL SELECT IF-Anweisung

Der Code, den ich versucht:

SELECT *FROM loans LEFT JOIN users ON loans.user_id=users.user_id 
(
IF student_ID='1' THEN (SELECT *FROM teacher) 
ELSE (SELECT *FROM student) 
) 

Der Code ist nicht richtig funktioniert. Ich möchte die loans Anzeige der student oder teacher Name von users. Ich habe Similia-Arbeit versucht, und es funktioniert auch nicht.

+0

Und die Frage ist? –

+0

'IF student_ID = '1''technisch gesehen ist das eher ein Assigment als ein Vergleich' IF student_ID ==' 1'' –

Antwort

0

Try this:

select * 
from loans l 
left join users u on l.user_id = users.user_id 
left join teacher t on u.teacher_id = t.teacher_id and u.student_id = 1 
left join student s on u.student_id = s.student_id and u.student_id <> 1 

Erklärung

  • Extract jeden Datensatz in Form von Darlehen
  • Extract Aufzeichnungen in den Benutzern, wo es ein Spiel auf User_id
    • Extract Aufzeichnungen von Lehrern Matching auf teacher_id wenn student_id des Benutzers 1
    • Extract Aufzeichnungen von Studenten auf STUDENT_ID passend, wenn Benutzer STUDENT_ID ist NICHT 1
+0

Vielen Dank! Es klappt. Anders als es nur eins für jedes anzeigen. Es ist genug, um mich zu erleichtern. – Rizky92