[英]SQL join query calculate data for current day return NULL when there is no data for current day
我有 4 个传感器向服务器发送事件数据。 数据基本上是开关状态,只有在开关 state 发生变化时才会发送到服务器。
我试图显示特定日期(午夜到午夜)的数据。 查询有效,但是当所选日期范围内的传感器没有数据时,传感器不会显示在我的列表中。 即使没有数据,我也想在列表中保留传感器。 我使用查询结果来填充我的 web 页面上的表,并希望显示所有传感器,即使是那些离线或只是未通信的传感器。
`SELECT columns_from_t1, columns_from_t2, SUM(column_t2) AS total
FROM table1 AS ti
LEFT JOIN table2 AS t
ON ti.id=t.id
WHERE CAST(datetimecolumn AS DATE) = CURDATE() OR datetimecolumn IS NULL
GROUP BY ti.columnname
ORDER BY t.datetimecolumn ASC`
尝试将WHERE
条件移动到左连接的ON
子句:
SELECT columns_from_t1, columns_from_t2, SUM(column_t2) AS total
FROM table1 AS ti
LEFT JOIN table2 AS t
ON ti.id = t.id AND
(CAST(t.datetimecolumn AS DATE) = CURDATE() OR t.datetimecolumn IS NULL)
GROUP BY ti.columnname
ORDER BY t.datetimecolumn;
在WHERE
子句中限制datetimecolumn
的问题是它可能导致不匹配的记录过早地被过滤掉。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.