私は世界で最も新しい LEFT JOIN の喜びへの変換者です。以下は美しく機能しています:
$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");
ただし、私が今やりたいことは、 とfavourite (f)
の共通フィールドのみを持ち、 との共通フィールドcnum
を持たない別のテーブルを参照comment (c)
することcomment_category (cc)
です。
私は次のことを試しました:
$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");
うまくいきません。comment_category (cc)
これは、ではなくへの別の参加を実際に要求しているためだと (私が読んだことから) 推測していcomment (c)
ます。
要するに、A、LEFT JOIN から B を選択し、B のフィールドを使用して C の値にアクセスするにはどうすればよいでしょうか?
更新(パンターの不快感による):
テーブルは次のとおりです。
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)
... ここで終了しfavourite
ます。テーブルにお気に入りのフィールドがないため、クラッシュします。
私の間違い。申し訳ありません。