Ich habe drei Tabellenmüssen andere Tabelle zu überprüfen, ob Feld in Tabelle 1 in es hat
students: first_name, last_name, high_school_id, other_high_school
high_schols: id, title
other_high_schools: id, title, student_id
Ich möchte mit den folgenden Informationen eine Liste der einzelnen Schüler angezeigt werden: Vorname, Nachname, High-School-
Die Tabelle "high_schools" enthält eine Liste von High Schools, die ein Schüler auswählen kann, wenn er seine nicht findet. Er füllt seine High School im Feld "other high school" aus. Wenn der Student das Formular einreicht, wird seine Information gespeichert, wobei das Feld students.other_high_school auf 1 gesetzt wird und seine ID (student.id = other_high_school.student_id) mit dem Titel ihrer High School in der Tabelle other_high_schools (other_high_school.title) gespeichert wird.
select
first_name, last_name, hs.title as high_school
from
students s
left join
high_schools hs
on
s.high_school_id = hs.id
Das first_name zurückkehrt, last_name, high_school, aber ist es möglich, dass die Abfrage zu ändern, um festzustellen, ob students.other_high_school = 1, dann die other_high_school beitreten und nicht der high_schools Tisch?
Dies funktioniert nicht, sollte aber helfen, zu erklären, was ich versuche zu erreichen:
select
first_name, last_name, hs.title as high_school
from
students s
CASE s.other_high_school
WHEN 0 THEN
left join
high_schools hs
on
s.high_school_id = hs.id
WHEN 1 THEN
left join
other_high_school hs
ON
s.id = hs.student_id
ELSE
left join
other_high_school hs
ON
s.id = hs.student_id
END CASE
GELÖST
select
first_name, last_name,
IF(s.other_high_school = 1, ohs.title, hs.title) high_school
from
students s
left join
high_schools hs
on
s.high_school_id = hs.id
left join
other_high_schools ohs
on
s.id = ohs.student_id