MySQL Join-Syntax für eine Beziehung von eins zu viele

8

Ich habe eine Situation, in der ich eine Tabelle mit Titeln (t1) und eine andere Tabelle mit mehreren Verknüpfungen habe, die diese Titel (t2) in einer Eins-zu-viele-Beziehung referenzieren.

Was ich will, ist die vollständige Liste der Titel, die mit einem Flag zurückgegeben werden, das angibt, ob ein bestimmter Link damit verknüpft ist.

Links Join und Gruppieren nach:

%Vor%

Dies ist nahe, da es mir entweder die erste link_id oder NULL in der refId-Spalte gibt.

Wie schränke ich nun die Ergebnisse ein, wenn ich eine spezifische link_id habe, anstatt zuzulassen, dass t2 den gesamten Datensatz durchläuft?

Wenn ich eine WHERE-Klausel hinzufüge, zum Beispiel:

%Vor%

Ich erhalte nur die wenigen Datensätze, bei denen die link_id übereinstimmt, aber ich brauche immer noch den vollständigen Satz von Titeln, die mit NULL in der refId-Spalte zurückgegeben werden, es sei denn link_id = 123.

Hoffe jemand kann helfen

    
Das123 02.08.2009, 03:15
quelle

2 Antworten

13

Setzen Sie Ihre Kriterien in der WHERE-Klausel in die LEFT JOIN-Klausel:

%Vor%     
blt04 02.08.2009, 03:19
quelle
4

Setzen Sie es in die Join-Bedingung für die zweite Tabelle

%Vor%     
cletus 02.08.2009 03:20
quelle

Tags und Links