内部联接对2个值日期时间和ID在同一张表上

问题描述

我有2张桌子:

  1. device_color
  2. device_alerts

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

device_id,datetime,color

device_alerts:

device_id,alert

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

我想将这两个表与查询合并。但是,当我这样做时,我可以进入很多行。我不知道我在做什么错。这是我的查询(这是sql lite,因为它在redash中)

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

解决方法

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

此版本一次加入到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,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

这两个都返回您的期望吗?