mysql - 查看最近x天是否没有创建记录

标签 mysql if-statement max intervals

假设我有一个数据库来跟踪结构如下所示的浇水植物:

Table: "Plants"
ID     Plants
----------------------------------
1      Roses
2      Daisies
3      Sunflowers
4      Marigolds
5      Daffodils

Table: "Maintenance"
ID    Plant_ID    Activity    Date
-------------------------------------
1     1            Water      2011-09-09
2     1            Water      2011-08-02
3     2            Water      2011-08-15
4     3            Water      2010-07-01
5     4            Weed       2010-07-01

我正在尝试编写一个查询,告诉我们植物是否需要浇水,如果需要,需要多严重。换句话说:如果植物在过去 30 天内没有浇水,则返回“黄色”警告级别;如果在过去 60 天内没有浇水,则为“红色”警告级别。

这是我目前所处的位置:

SELECT Plants.Plants, 
IF ( DATEDIFF(CURRENT_DATE, MAX(Maintenance.Date)) < 30 AND maintenance.type = "Water", '',
  IF ((DATEDIFF(CURRENT_DATE, MAX(Maintenance.Date)) >= 60 AND maintenance.type = "Water") or maintenance.date IS NULL, 'Red', 'Yellow')
) AS `Water Warning`,
IF ( DATEDIFF(CURRENT_DATE, MAX(Maintenance.Date)) < 30 and maintenance.type = "Weed" , '',
  IF ((DATEDIFF(CURRENT_DATE, MAX(Maintenance.Date)) >= 60 and maintenance.type = "Weed") or maintenance.date IS NULL, 'Red', 'Yellow')
) AS `Weeding Warning`
FROM `plants`
LEFT JOIN `maintenance` ON `maintenance`.`plant_id` = `plants`.`id`
GROUP BY `plants`.`id`;

但这会为“Roses”返回“红色”警告,而不是预期的空字符串,并且没有 Maintenance.Activity 的条件。请注意,同一查询还需要为除草和其他事件执行类似的功能,因此在 WHERE 子句中进行过滤可能不是答案。

这是我想要的:

Results
ID     Plants        "Water Warning"  "Weed Warning"
----------------------------------------------------
1      Roses               ""             "Red"
2      Daisies           "Yellow"         "Red"
3      Sunflowers         "Red"           "Red"
4      Marigolds          "Red"            ""
5      Daffodils          "Red"           "Red"

最佳答案

使用下面的语句,你只需要用植物名称加入表格。

SELECT *, 

CASE
    WHEN DATEDIFF(CURRENT_DATE, DATE) >= 60 THEN 'RED'
    WHEN DATEDIFF(CURRENT_DATE, DATE) >= 30 THEN 'YELLOW'
END AS FLAG
FROM test_table

关于mysql - 查看最近x天是否没有创建记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7365033/

相关文章:

mysql如果选择则插入

javascript - 检查数据输入时的自定义警报,Javascript

javascript - 一起显示英里每小时和公里每小时?

java - 使用Java递归查找数组的最小值和最大值

python - 如何找到给定索引之间 numpy 数组的最大值?

sql - MySQL 服务器已消失错误

php - 如何使用 symfony2 中其他 2 个表的主键创建一个表?

php - 为会计系统设计MySQL表

C# If loop within a for loop within a if loop

sql - 我需要帮助编写复杂的 SQL 语句