2012-01-10 12 views
2

に参加します。MySQLの複数のは、私が参加しevents_formatsが参加events_stylesを持つイベントをフィルタリングしようとしています<strong>イベント</strong>、<strong>events_styles</strong>、<strong>events_formats</strong>テーブル(イベントは、多くのスタイルと多くのフォーマットを持つことができます) を持って

SELECT * FROM events 
JOIN events_styles ON events.id = events_styles.event_id 
JOIN events_formats ON events.id = events_formats.format_id 
WHERE events_styles.style_id = 3 AND events_formats.format_id = 1; 

Empty set (0.00 sec) 

SELECT * FROM events_styles 
WHERE events_styles.style_id = 3 
+----------+----------+ 
| event_id | style_id | 
+----------+----------+ 
|  3 |  3 | 
|  2 |  3 | 
|  4 |  3 | 
+----------+----------+ 
3 rows in set (0.00 sec) 

SELECT * FROM events_formats 
WHERE events_formats.format_id = 1  
+----------+-----------+ 
| event_id | format_id | 
+----------+-----------+ 
|  1 |   1 | 
|  3 |   1 | 
|  4 |   1 | 
+----------+-----------+ 
3 rows in set (0.00 sec) 

だから最初のクエリは、IDが4のイベントを返す必要があります。これまでのところ、私の試み - だから、クエリは、特定のスタイルと特定のフォーマットされているすべてのイベントを選択する必要がありますか? 確かに2番目と3番目のクエリをサブクエリに結合する必要がありますが、Imの構文がわからない - 感謝

+0

あなたは自分を蹴るでしょう。あなたの参加条件events.id = events_formats.format_idはevents.id = events_formats.event_idでなければなりません – dash

答えて

1

非常に近いです!

あなたのクエリは次のようになります。FORMAT_IDに参加することで

SELECT * FROM events 
JOIN events_styles ON events.id = events_styles.event_id  
JOIN events_formats ON events.id = events_formats.event_id 
WHERE events_styles.style_id = 3 
AND events_formats.format_id = 1; 

とあなただけが:-)

間違っていたところだ3のないcorrespodingスタイルIDを持っていないのevent_id = 1を得ようとしているのevent_idありません
+0

あなたの権利 - 私は自己の蹴り始めます! - ありがとう – rebelbass

関連する問題

 関連する問題