Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 列名称不明确,连接三个表_Sqlite_Join - Fatal编程技术网

Sqlite 列名称不明确,连接三个表

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

我正在使用“用于SQLite的DB Browser”测试我的SQL查询,结果发现错误:

不明确的列名:Devices.Label

我有一个包含三个表的数据库:

我想从每个设备获得一个带有最新时间戳的结果,例如:

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年前),用正确的ANSI
JOIN
语法替换了老式的逗号分隔表列表样式,不鼓励使用它