mysql - 多个多对多关系SQL查询

标签 mysql sql many-to-many

我有一张包含事件event_dateevent_category 的表格。我使用 event_to_dateevent_to_category 建立了两个多对多关系。

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

我想要的给定类别的示例:

21 Feb
Event 1
Event 2

22 Feb
Event 2
Event 3

获取类别事件的代码是:

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

最佳答案

尝试:

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”的字段是感兴趣的。

关于mysql - 多个多对多关系SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21922446/

相关文章:

mysql - 查找部门内员工的平均工资偏差

sql - array_agg 包含另一个 array_agg

java - 同一类型实体的多对多关系

mysql 多对多关系作为列

mysql - 提高 MySQL LIKE 查询的速度?

php - MySQL 在第 15 行添加新行时删除第一行

mysql - 仅当一列值为 0 时才执行 SQL 查询

sql - 尝试导入转储时出现重复条目​​错误

mysql - 在 MySQL 中使用 EXISTS

c# - MVC3 Entity Framework 多对多附加列