使用 JOIN 计算 mySQL 的出现次数

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 次

谢谢!:)

x4r*_*f41 5

这将起作用:

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 JOINLEFT JOIN,如果你想包括与0 occurances类别