Ich bin der weltweit neueste konvertieren zu den Freuden von LINKER JOIN. Die folgende arbeitet schön:Wie Links Link Join A nach B auf X, dann verbinden B zu C auf Y
$STH = $DBH->prepare("
SELECT cc.cat_subject, cc.cat_major, cc.cat_minor, cc.cat_name, c.cnum, c.unmod
FROM comment_category cc
LEFT JOIN comment c
ON cc.cat_subject = c.cat_subject AND cc.cat_major = c.cat_major AND cc.cat_minor = c.cat_minor
ORDER BY cc.cat_subject, cc.cat_major, cc.cat_minor");
Was soll ich jetzt tun, aber Referenz ist eine weitere Tabelle favourite (f)
, die nur ein gemeinsames Feld cnum
mit comment (c)
und keine mit comment_category (cc)
hat.
Ich habe versucht, die folgenden:
$STH = $DBH->prepare("
SELECT cc.cat_subject, cc.cat_major, cc.cat_minor, cc.cat_name, c.cnum, c.unmod, f.favourite
FROM comment_category cc
LEFT JOIN comment c
ON cc.cat_subject=c.cat_subject AND cc.cat_major=c.cat_major AND cc.cat_minor=c.cat_minor
LEFT JOIN favourite f
ON c.cnum=f.cnum
ORDER BY cc.cat_subject, cc.cat_major, cc.cat_minor");
Es funktioniert nicht. Ich rate (von dem, was ich gelesen habe), dass das ist, weil ich tatsächlich eine andere Verbindung zu comment_category (cc)
anstatt zu comment (c)
anfrage.
Kurz gesagt: Wie wähle ich von A, LINKE VERBINDUNG zu B, aber verwenden Sie dann ein Feld in B, um auf einen Wert von C zuzugreifen?
UPDATE (wegen Unlust Punter):
Die Tische sind:
comment_category
----------------
subject (int)
cat_major (int)
cat_minor (int)
name (varchar)
comment
-------
cnum (int)
subject (int)
cat_major (int)
cat_minor (int)
unmod (varchar)
favourite
---------
cnum (int)
... ich hier aufhören werde - es stürzt ab, weil es in der favourite
Tabelle kein Lieblingsfeld ist.
Mein Fehler. Entschuldigung, alles.
Sind Sie auf der Suche nach etwas wie: SELECT blah aus einem LINKEN JOIN B auf B.b = A.a LINKE JOIN C auf C.c = B.etwas? Ihre SQL sieht gültig aus. Welche Fehler bekommst du? – Corbin
Was meinst du "Es funktioniert nicht."? Error? Keine Zeilen zurückgegeben? –
Entschuldigung, alle. Keine Zeilen zurückgegeben. Ich werde die Frage aktualisieren. – Nick