-2

我有 2 张桌子:

  1. 设备颜色
  2. device_alerts

两个表都有特定于 device_id 和 datetime 的数据,例如设备颜色:

device_id, datetime, color

设备警报:

device_id, datetime, alert

现在每个设备每天可以有多个记录。因此,每天 1 台设备可以有多个警报和多种颜色。并且有多种设备。

我想将这两个表与查询合并。但是当我这样做时,我会得到很多行。我不知道我做错了什么。这是我的查询(它是 sql lite,因为它处于重排状态)

select a.alarm_type, a.created_at, a.monitor_id, dc.datetime, dc.device_id, dc.color
from query_505127 as a
inner join query_505241 as dc on a.monitor_id = dc.device_id
inner join query_505241 as dc1 on dc.datetime = a.created_at_date
4

1 回答 1

1

没有示例数据,很难确切知道您想要什么。

这个版本加入 query_505241 一次,使用这两个字段作为 JOIN 标准,我认为这就是你所追求的。

select a.alarm_type, a.created_at, a.monitor_id, dc.datetime, dc.device_id, dc.color
from query_505127 as a
inner join query_505241 as dc on a.monitor_id = dc.device_id
AND dc.datetime = a.created_at_date

此版本与您的查询相同,但第二个 JOIN 基于 dc1.datetime 而不是 dc.datetime

select a.alarm_type, a.created_at, a.monitor_id, dc.datetime, dc.device_id, dc.color
from query_505127 as a
inner join query_505241 as dc on a.monitor_id = dc.device_id
inner join query_505241 as dc1 on dc1.datetime = a.created_at_date

这些中的任何一个都会返回您所期望的吗?

于 2020-10-30T10:35:36.530 回答