mysql - JOIN 查询的行为不符合预期

标签 mysql sql

我正在处理一个未按预期运行的查询,如果您能帮助我指明正确的方向,我将不胜感激。

表格 我有三个中心表,由以下内容组成。

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/

相关文章:

php - MySQL + PhP - 搜索多个单词

php - MySQL 撇号-如何使用 MATCH/AGAINST 转义并返回正确的结果

php - MySQL多个MAX语句导致语法错误?

mysql - 如何使用日期时间列在一天中的某个时间后获取行

mysql - 如何根据返回相同数据的多个列进行 UPDATE 或 INSERT,而无需访问唯一 ID

MySql select unique with sum 产生奇怪的结果

mysql 表设计用于每日轮换顶级评分

mysql - 搜索以显示给定记录模式的精确匹配和最接近匹配

SQL Server 2008 列前缀错误

MySql 引用完整性