我正在处理一个未按预期运行的查询,如果您能帮助我指明正确的方向,我将不胜感激。
表格 我有三个中心表,由以下内容组成。
table_categories
- id (int)
- name (varchar)
table_events
- id (int)
- name (varchar)
- created (date time)
table_taxonomy
- cat_id (id from table_categories)
- event_id (id from table_events)
- type (varchar in this example always 'category')
目标 统计每个类别中特定日期之后创建的事件。结果应该类似于:
COUNT NAME ID
3 Rock 1
2 Punk 3
查询 这是我提出的查询。问题是结果不关心创建日期,而是获取所有事件,无论它们何时创建。
SELECT COUNT(*) AS count,
table_categories.name,
table_categories.id
FROM table_taxonomy
INNER JOIN table_categories
ON table_categories.id = table_taxonomy.cat_id
LEFT JOIN table_events
ON table_events.id = table_taxonomy.events_id
WHERE table_taxonomy.type = 'category'
AND table_taxonomy.cat_id IN(2,3)
AND table_events.created > '2012-10-07 05:30:00'
GROUP BY (table_categories.name)
最佳答案
试试这个,在比较日期时只需做一些小小的改变:
SELECT COUNT(*) AS count,
table_categories.name,
table_categories.id
FROM table_taxonomy
INNER JOIN table_categories
ON table_categories.id = table_taxonomy.cat_id
LEFT JOIN table_events
ON table_events.id = table_taxonomy.events_id
WHERE table_taxonomy.type = 'category'
AND table_taxonomy.cat_id IN(2,3)
AND Date(table_events.created) > '2012-10-07 05:30:00'
GROUP BY (table_categories.name)
关于mysql - JOIN 查询的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12776446/