我事件,events_styles,events_formats表(一个事件可以有众多的款式和多种格式) 我想筛选其中有一个events_styles加入和events_formats参加活动。因此,查询应该选择哪些是特定风格和特定格式的所有事件 - 我尝试到目前为止:MySQL的多个多对多连接
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返回事件? 我确定我需要将第二个和第三个查询合并到一个子查询中,但是Im不确定语法 - 谢谢
你会踢你自己;你的连接条件events.id = events_formats.format_id应该是events.id = events_formats.event_id – dash 2012-01-10 13:21:20