2009-08-12 6 views
0

私は正直で、私はデータベースクエリがうまくいかないと言いますが、この質問はおそらく非常に単純です。いくつかの結合を含むSQL文

私は私の通常のクエリは、このために返されたクエリのようなものである

SELECT * FROM `Post` AS `p` 
LEFT JOIN `CategoryBinding` AS `cb` ON p.ID = cb.postID 
LEFT JOIN `Category` AS `c` ON cb.categoryID = c.ID 

に入れてカテゴリを持つすべての記事を取得することである3つのテーブル

Post 
    ID 
    entry 
Category 
    ID 
    name 
CategoryBinding 
    ID 
    postID 
    categoryID 

あります

ID entry ID name ID postID categoryID 
1  entry1 1  php  1  1   1 
1  entry1 2  asp  1  1   2 

2  entry2 1  php  1  2   1 

3  entry3 null null null null  null 

今、すべてのカテゴリがある特定のカテゴリIDに属するすべての投稿を取得したいe投稿が入れられます。
I.E最初のクエリと同じことをしたいが、特定のカテゴリに属する​​投稿のみを取得したい。 今、カテゴリに属する​​投稿を取得したいだけです。つまり、

ID entry ID name ID postID categoryID 
1  entry1 1  php  1  1   1 
1  entry1 2  asp  1  1   2 

私はこれをどのように行うことができますか?

誰かが私を助けてくれたら、これは「私の仕事をしてください」という質問にもっと似ているので、私はとても感謝しています。

答えて

3
SELECT * 
FROM `Post` AS `p` 
LEFT JOIN `CategoryBinding` AS `cb` ON p.ID = cb.postID 
LEFT JOIN `Category` AS `c` ON cb.categoryID = c.ID 
INNER JOIN `Post` AS `p2` ON p.id = p2.id 
WHERE p.id in 
(
    SELECT p2.id 
    FROM `Post` as `p2` 
    LEFT JOIN `CategoryBinding` AS `cb` ON p2.ID = cb.postID 
    LEFT JOIN `Category` AS `c` ON cb.categoryID = c.ID 
    WHERE c.id = @SomeCategory 
) 

いいえ、最終的なショット。

これは重複した行を返します。グループを目的のものに追加するだけです。

+0

質問を変更し、予想される出力を追加しました。 – unkownt

+0

あなたが書いた質問は私に与えるだけ 1 entries1 2 asp 1 1 2 – unkownt

+0

いいえ、私はクエリを更新しました。これを撃つ。 – Brandon

関連する問題