php - SQL INNER Join 没有给出结果

标签 php mysql sql

我有两个表,信息如下:

Table: menu_dishes
dish_id   dish_title     ingredients
DSH01     Bacon & Eggs   Bacon, eggs

Table: menu_dishes_status
dish_id  valid_from  valid_to     price
DSH01    2013-10-10  2013-12-31   10.00
DSH01    2014-01-01  2014-02-28   12.00

第一个表包含菜品,第二个表包含菜品的状态。因此,菜肴的当前状态是 CURRENT_DATE 介于 valid_from 和 valid_to 日期之间,而退役菜肴的状态是 MAX(valid_to) < CURRENT_DATE。

我正在加入这些表并对数据进行分类:

'n' NEW => WHERE CURRENT_DATE BETWEEN valid_from AND (valid_from + 1 MOTNH)
'c' CURRENT => WHERE CURRENT_DATE > (valid_from + 1 MOTNH)
'r' RETIRED => the rest of the rows, so the "dish_id" items not in the tables above, BUT 
           returning the values from the row containing MAX(valid_to) date.

查询(在论坛的帮助下)是:

SELECT
    menu_dishes.dish_id,
    menu_dishes.dish_title,
    menu_dishes.ingredients,
    menu_dishes_status.price,
CASE 
    WHEN
        CURRENT_DATE BETWEEN menu_table_status.valid_from 
                         AND DATE_ADD(menu_table_status.valid_from, INTERVAL 1 MONTH) 
        AND CURRENT_DATE < menu_table_status.valid_to
    THEN 'n' 
    WHEN
      CURRENT_DATE > DATE_ADD(menu_table_status.valid_from_date, INTERVAL 1 MONTH) 
      AND CURRENT_DATE < menu_table_status.valid_to
    THEN 'c'
    ELSE 'r'
END as status
FROM menu_dishes
INNER JOIN 
    menu_dishes_status ON (menu_dishes.dish_id = menu_dishes_status.dish_id)
ORDER BY menu_dishes.dish_title ASC

以上返回(在 DSH01 数据示例的情况下)两行,一行包含 10 美元,另一行包含 12 美元。我需要“r”个项目包含最近时间段的价格,或者 MAX(valid_to)

如何添加此连接/条件?我尝试了一个子查询但没有成功。

提前致谢!

最佳答案

您需要按 menu_dishes_status.dish_id 对数据进行分组。 Max(valid_to) 会很好地工作

试试这个

FROM menu_dishes
INNER JOIN 
    menu_dishes_status ON (menu_dishes.dish_id = menu_dishes_status.dish_id)
group by menu_dishes_status.dish_id having MAX(valid_to)
ORDER BY menu_dishes.dish_title ASC

让我知道这是否有效

关于php - SQL INNER Join 没有给出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23130887/

相关文章:

php - 我可以使用相同的 PDO dsn 连接到 mariadb 吗?

php - 统计mysql中的出现次数

javascript - 通过 node.js 在 Mysql 中插入值

python - 使用 MySQLdb 对非 utf 符号进行 utf8 编码

python - 如何保护 Django 中的对象不被删除?

php - 为什么日期是表格中的必填字段?

mysql - 合并两个表而不重复

mysql - 如何在忽略列顺序的情况下计算SQL中的不同列

java - 删除查询失败后 JPA 合并

php - 在 PHP 中执行多个更新语句