0

category、movies、category_moviesを呼び出す3つのSQLテーブルがあります。カテゴリと映画のテーブルには、多対多の関係があります。そのため、category_moviesテーブルを使用します。これはテーブルの構造です...

Category : cat_id, cat_name, 
movies : mov_id, mov_name, 
category_movies : cat_id, mov_id

これで、動的に3つのカテゴリIDを取得しました。次に、3つのcategory_idに属するカテゴリ名を使用して、映画の名前だけを選択したいと思います。

これは私がこれまでに試したクエリです。

SELECT  c.cat_name AS cn, m.mov_name AS mn, m.mov_id 
FROM    category AS c 
        INNER JOIN category_movies AS cm ON cm.cat_id = c.cat_id        
        INNER JOIN movies AS m ON m.mov_id = cs.mov_id
WHERE   c.cat_id IN (2, 5, 7)
GROUP BY c.cat_name, m.mov_name, m.mov_id 
HAVING COUNT(*) >= 3

しかし、これは現在機能しています..誰かがこのクエリの何が問題になっているのか教えてもらえますか?

4

2 に答える 2

4

INこれに関する節を使用する

SELECT..
FROM..
WHERE cat_id IN (2, 5, 7)

と同じです

SELECT..
FROM..
WHERE cat_id = 2 OR
      cat_id = 5 OR
      cat_id = 7

INNER JOINまた、そうではないことに注意してくださいINNOR JOIN

しかし、私はあなたが実行したいと思いますRELATIONAL Divisionあなたはあなたが見つけたいすべてのカテゴリーを持っている映画を検索したいです

SELECT  c.cat_name, m.mov_name, m.mov_id 
FROM    category AS c 
        INNER JOIN movies AS m ON m.cat_id = c.cat_id
        INNER JOIN category_movies AS cm ON cm.mov_id = m.mov_id
WHERE   cat_id IN (2, 5, 7)
GROUP BY c.cat_name, m.mov_name, m.mov_id 
HAVING COUNT(*) >= 3
于 2013-01-11T13:58:51.260 に答える
0

INNOR-> INNER WHERE cat_id = 2 AND 5 AND 7

それはほとんど正しくない可能性がありますそれはおそらくまたはである必要があります

于 2013-01-11T13:58:55.477 に答える