【问题标题】:mySQL count occurrences with JOIN (with date parameters)mySQL 使用 JOIN 计数出现次数(使用日期参数)
【发布时间】:2013-08-08 23:34:25
【问题描述】:

我在这里问了一个问题:mySQL count occurrences with JOIN

这个问题,问如何在加入等之后计算标签的出现次数。

我想知道如何执行此操作,但还要检查事件publish_date,因为我只想包含过去 6 个月或一年内的标签。

**events** 
| id  |    publish_date   |
+-------------------------+
+ 1   | 1377612000        |
+ 2   | 1377612000        |
+ 3   | 1377612000        |

**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           |   

返回标签计数的 SQL(不考虑发布日期)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

谢谢! :)

【问题讨论】:

  • 我看不到 publish_date 也没有你方面的努力。
  • publish_date 将在事件表上,该表由 Events_Categories 链接,显示持有 event_id。我认为没有必要显示事件表,因为只有相关字段是 id 和 publish_date(unix 时间)
  • @juergend - 很抱歉让您有这种感觉,我在这里询问并认为我已经提供了所有信息。在问这个问题时,我一直在尝试自己的解决方案(见下文)

标签: mysql join count conditional-statements many-to-one


【解决方案1】:
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 
JOIN events e ON e.id = ec.event_id
WHERE(e.publish_end_date > (unix_timestamp() -7889229) OR e.publish_end_date = 0)
GROUP BY c.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多