mysql - 与连接表的多对多关系

标签 mysql sql

我有 2 个具有多对多关系的模型,eventcategory。我正在尝试组合一个查询,让我按类别名称获取事件。

我有以下表格:

类别

id | name

事件

id | name

event_categories_join

category_id | event_id

我已经通过内部连接数据透视表成功地从类别 id 中获取了事件。

SELECT * FROM event
INNER JOIN event_categories_join
ON event.id = event_categories_join.event_id
WHERE event_categories_join.category_id = 5

如何通过名称而不是 ID 执行此操作?


编辑:

我分为三个类别,音​​乐会、复活节和演讲。我还有一个事件,伦敦语法,属于音乐会和复活节类别。现在我想编写一个查询,在其中提供类别的名称,并获取所属事件 - 在本例中为 Concert。

最佳答案

您需要另一个连接。尝试类似的东西

SELECT * FROM event
INNER JOIN event_categories_join ON event.id = event_categories_join.event_id
INNER JOIN category ON category.id = event_categories_join.category_id
WHERE category.name = 'my_category';

附带说明:您应该重新考虑将 event_categories_join 重命名为 event_categories。或者可能是 event_categories_mapping。这很可能更适用于所讨论的域,而连接命名与我们正在处理关系数据库的事实紧密相关。

关于mysql - 与连接表的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29207426/

相关文章:

用于仅查找包含特殊字符的行的 SQL 查询

php - 确保多个请求被依次处理

php - 没有递归的PHP中的树算法

database - 用于按多个日期值排序的 MySQL 查询

php - 使用php将数据插入mysql表时为0值

MySQL:统计一个值连续出现的次数

mysql - 选择按月.年分组的两个日期之间的用户计数,并在计数 = 0 的月份中包含零

python - 在python中,如何执行postgresql 'LIKE %name%'查询来减轻SQL注入(inject)?

c# - 使用动态列名称更新 Dapper

mysql - 为什么此代码能够在 HAVING 中使用来自 SELECT 的别名?