Big*_*nce 1 mysql join count one-to-many
我有一个用于我的事件系统的标记系统,我想创建一个“标记云”。
我有事件,它可以有多个“类别”。
这是表结构:
**Event_Categories** (Stores Tags / Categories)
| id | name |
+-----------------+
+ 1 | sport |
+ 2 | charity |
+ 3 | other_tag |
**Events_Categories** (Linking Table)
| event_id | event_category_id |
+-------------------------------+
+ 1 | 1 |
+ 2 | 2 |
+ 3 | 1 |
+ 3 | 2 |
Run Code Online (Sandbox Code Playgroud)
概括:
Event ID 1 -> Sport
Event ID 2 -> Charity
Event ID 3 -> Sport, Charity
Run Code Online (Sandbox Code Playgroud)
我想返回以下内容:
| tag_name | occurrences |
+-----------+-------------+
| sport | 2 |
| society | 2 |
Run Code Online (Sandbox Code Playgroud)
other_tag - 没有实际返回,因为它出现了 0 次
谢谢!:)
这将起作用:
SELECT c.name AS tag_name, COUNT(ec.event_id) AS occurrences
FROM Event_Categories c
INNER JOIN Events_Categories ec ON c.id = ec.event_category_id
GROUP BY c.id
Run Code Online (Sandbox Code Playgroud)
更改INNER JOIN
到LEFT JOIN
,如果你想包括与0 occurances类别