2

私は世界で最も新しい 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ます。テーブルにお気に入りのフィールドがないため、クラッシュします。

私の間違い。申し訳ありません。

4

1 に答える 1