Ich habe eine Situation, wo ich eine Tabelle von Titeln (t1) und eine andere Tabelle mit mehreren Links, die diese Titel (t2) in einer Eins-zu-viele Beziehung verweisen.MySQL Join-Syntax für eine zu viele Beziehung
Was ich will, ist die vollständige Liste der Titel mit einem Flag zurückgegeben, die angibt, ob eine bestimmte Verknüpfung zugeordnet ist.
LEFT JOIN und Gruppieren nach:
SELECT
t1.id
, t1.title
, t2.link_id AS refId
FROM
t1
LEFT JOIN t2
ON (t1.id = t2.title_id)
GROUP BY t1.id;
Dies liegt nahe, wie es mir gibt entweder die erste link_id oder NULL in der refId Spalte.
Nun, wie schränke ich die Ergebnisse ein, wenn ich eine bestimmte link_id habe, anstatt t2 den gesamten Datensatz durchlaufen zu lassen?
Wenn ich hinzufügen, eine Klausel WHERE, zum Beispiel:
WHERE t2.link_id = 123
ich nur die wenigen Aufzeichnungen, wo die link_id Matches aber ich muss noch den vollen Satz von Titeln mit NULL in der refId Spalte zurückgegeben, es sei denn link_id = 123.
Hoffnung jemand
Thankyou beide dafür. Funktioniert perfekt. :) – Das123