2011-09-14 9 views
1

ジャンルとIDが繰り返されている「ジャンル」テーブルがあるので、両方のジャンルのある行をすべて返すように特定のクエリを作成したいid。MySQL - 1つのテーブル、繰り返しIDを持つ複数の行

例えば、

+---------+-------+ 
| genre | movie | 
+---------+-------+ 
| Musical | 558 | 
| Musical | 562 | 
| Musical | 597 | 
| Musical | 651 | 
| Musical | 656 | 
| Musical | 791 | 
| Musical | 810 | 
| Musical | 845 | 
| Musical | 859 | 
| Musical | 919 | 
| Musical | 949 | 
| Musical | 971 | 
+---------+-------+ 
12 rows in set (0.00 sec) 

+--------+-------+ 
| genre | movie | 
+--------+-------+ 
| Comedy | 642 | 
| Comedy | 643 | 
| Comedy | 644 | 
| Comedy | 651 | 
| Comedy | 654 | 
| Comedy | 658 | 
+--------+-------+ 
6 rows in set (0.00 sec) 

それは喜劇でと音楽の両方であるので、私はそれが「映画651」を返すようにしたいです(両方とも「コメディ」のクエリを仮定し、 'ミュージカル')。

+2

毎日の質問。 http://stackoverflow.com/questions/7407001/mysql-select-from-associative-table/7407063#7407063をお試しください。 – Konerak

答えて

0

これはあなたの両方の

select movie from table a join table b on a.movie = b.movie 
4

使用

SELECT DISTINCT A.MOVIE FROM GENRES A, GENRES B WHERE A.MOVIE = B.MOVIE AND A.GENRE = 'Comedy' AND B.GENRE = 'Musical'; 

EDITでのIDのリストを提供します - コメントごとに:私たちは、これを取得しているようだ

SELECT DISTINCT A.MOVIE 
FROM 
    GENRES A 
    INNER JOIN 
    GENRES B 
     ON A.MOVIE = B.MOVIE 
WHERE A.GENRE = 'Comedy' 
    AND B.GENRE = 'Musical'; 
+0

少し微調整してa.movi​​eを選んでください。a、a、b:a.movi​​e = b.movi​​e、a.genre = 'Comedy' AND b.genre = 'Musical'; – JDelonge

+0

が更新されました...アップしたことを忘れないでください/助けていた回答を受け入れるようにマークしてください... – Yahia

+0

なぜdownvote?改善すべきことがある場合は、説明がうまくいくでしょう... – Yahia

1
SELECT DISTINCT 
    movie 
FROM 
    genres 
WHERE 
    movie in (SELECT movie from genres where genre = "Musical") 
    AND movie in (SELECT movie from genres where genre = "Comedy") 
+2

これは私に、交差点ではなくユニオンを与えます – JDelonge

+0

ああ、そうです。今編集しました。 – v42

関連する問題