多个多对多关系SQL查询

时间:2014-02-21 00:07:16

标签: mysql sql many-to-many

我有eventsevent_dateevent_category的表格。我使用event_to_dateevent_to_category创建了两对多关系。

我正在尝试按类别构建一个按日期分组的事件页面。我可以按日期或类别提取事件,但我不知道如何按日期对此进行分组。

我想要的一个例子,对于给定的类别:

21 Feb
Event 1
Event 2

22 Feb
Event 2
Event 3

获取caetgory事件的代码是:

SELECT * from event e
INNER JOIN event_to_category etc ON etc.event_id = e.id
WHERE etc.category_id = 53

编辑:下面的表格式

events: id, title, name, desc, archived, body
event_date: id, name
event_category: id, title, desc, active

event_to_date: id, event_id, event_date_id
event_to_category: id, event_id, event_category_id

2 个答案:

答案 0 :(得分:1)

尝试:

select ed.name, e.title
  from event e
  join event_to_category etc
    on etc.event_id = e.id
  join event_category ec
    on etc.event_category_id = ec.id
  join event_to_date etd
    on e.id = etd.event_id
  join event_date ed
    on etd.event_date_id = ed.id
 where etc.category_id = 53
 order by ed.name

我做了几个关于哪些列相互引用的假设。我还假设“event_date”表中名为“name”的字段是您感兴趣的字段。

答案 1 :(得分:0)

我认为您只需要加入另外两个表格和GROUP BY日期,据我所知,它应该来自name表格<{1}}

event_date