Sqlite 列名称不明确,连接三个表
我正在使用“用于SQLite的DB Browser”测试我的SQL查询,结果发现错误: 不明确的列名:Devices.Label 我有一个包含三个表的数据库: 我想从每个设备获得一个带有最新时间戳的结果,例如:Sqlite 列名称不明确,连接三个表,sqlite,join,Sqlite,Join,我正在使用“用于SQLite的DB Browser”测试我的SQL查询,结果发现错误: 不明确的列名:Devices.Label 我有一个包含三个表的数据库: 我想从每个设备获得一个带有最新时间戳的结果,例如: Hot | 1545074701 | 25.8 Hot | 1545071101 | 23.2 Cool | 1545071101 | 24.0 我的查询如下所示: SELECT Devices.Label, max(Humidity.Timestamp), Humidi
Hot | 1545074701 | 25.8
Hot | 1545071101 | 23.2
Cool | 1545071101 | 24.0
我的查询如下所示:
SELECT Devices.Label, max(Humidity.Timestamp), Humidity.H, max(Temperature.Timestamp), Temperature.C
FROM Temperature, Humidity
INNER JOIN Devices ON Temperature.DeviceID = Devices.DeviceID
INNER JOIN Devices ON Humidity.DeviceID = Devices.DeviceID;
我错过了什么?我没有指定从哪个表中获取信息吗?
下一步当然是从查询中获得正确的结果,然后将其作为JSON对象发送到Android应用程序。多亏了粘性位,我将查询更改为:
SELECT
DevHum.Label, MAX(Humidity.Timestamp), Humidity.H, Temperature.C
FROM
Temperature, Humidity
INNER JOIN
Devices AS DevTemp ON Temperature.DeviceID = DevTemp.DeviceID
INNER JOIN
Devices AS DevHum ON Humidity.DeviceID = DevHum.DeviceID;`
这似乎起到了作用
我决定将其分为两个查询,一个用于热查询,另一个用于冷查询,因为现在将它们组合在一起比我的级别高。查询中有两个
设备。现在解析器不知道您在Devices.Label
中指的是哪一个。为FROM
子句中的设备
添加别名,并用相应的别名限定对其列的所有引用。请。使用链接/图像仅为方便补充文本和/或无法在文本中给出的内容。这是常见问题解答。请总是用谷歌搜索错误信息,对你的问题/问题/目标的许多清晰、简洁和具体的版本/措辞,有或没有你的特定字符串/名称,以及“site:stackoverflow.com”&标记并阅读许多答案。将发现的相关关键字添加到搜索中。如果你找不到答案,就发布,使用1个变体搜索作为标签的标题和关键字。请参见文本上方的向下投票箭头鼠标。如果您有不重复的代码问题要发布,请阅读并采取行动。-在ANSI-92 SQL标准中(超过25年前),用正确的ANSIJOIN
语法替换了老式的逗号分隔表列表样式,不鼓励使用它