Sql 同一个表中2个值(datetime和id)的内部联接

Sql 同一个表中2个值(datetime和id)的内部联接,sql,sqlite,inner-join,redash,Sql,Sqlite,Inner Join,Redash,我有两张桌子: 设备颜色 设备警报 例如,这两个表都有特定于设备id和日期时间的数据 设备颜色: device_id, datetime, color 设备警报: device_id, datetime, alert 现在,每个设备每天可以有多个记录。因此,每天一台设备可以有多个警报和多种颜色。而且有多种设备 我想用一个查询合并这两个表。但当我这样做的时候,我会走到很多行。我不知道我做错了什么。这是我的查询(它是SQLLite,因为它是在redash中) 如果没有示例数据,就很难准确地知道您

我有两张桌子:

  • 设备颜色
  • 设备警报
  • 例如,这两个表都有特定于设备id和日期时间的数据 设备颜色:

    device_id, datetime, color
    
    设备警报:

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

    我想用一个查询合并这两个表。但当我这样做的时候,我会走到很多行。我不知道我做错了什么。这是我的查询(它是SQLLite,因为它是在redash中)


    如果没有示例数据,就很难准确地知道您想要什么

    这个版本连接到query_505241一次,使用两个字段作为连接条件,我想这就是您想要的

    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
    

    此版本与查询相同,但第二个联接基于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
    
    这两种产品中的任何一种都能满足您的期望吗

    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