SQL在postgresql上跨多个表连接
我的表格结构如下:SQL在postgresql上跨多个表连接,sql,postgresql,join,Sql,Postgresql,Join,我的表格结构如下: measurements: id | Value | sensor_id 现在我有了另一张叫做传感器的桌子 sensors: id | Name | provider_id 然后我有另一个名为Providers的表,如下所示: providers: id | Name 现在我要做的是从测量表中选择所有记录,其中传感器ID具有特定类型(由ID指定) 所以我做了一些类似的事情: select * from measurements, sensors, providers
measurements:
id | Value | sensor_id
现在我有了另一张叫做传感器的桌子
sensors:
id | Name | provider_id
然后我有另一个名为Providers的表,如下所示:
providers:
id | Name
现在我要做的是从测量表中选择所有记录,其中传感器ID具有特定类型(由ID指定)
所以我做了一些类似的事情:
select * from measurements, sensors, providers
JOIN sensors on sensors.id = measurements.sensor_id
JOIN providers on providers.id = sensor.provider_id
where provider.id = 1 LIMIT 100
但是,这会返回到表“sensor_measurements”(传感器测量)有一个条目,但无法从查询的这一部分引用它。
我尝试过其他类型的变量,但无法使其工作
我正在使用Postgresql和PgAdmin工具。切勿在FROM
子句中使用逗号。因此:
select * -- you should list out the columns you want
from measurements m join
sensors s
on s.id = m.sensor_id join
providers p
on p.id = s.provider_id
where p.id = 1
limit 100
切勿在FROM
子句中使用逗号。因此:
select * -- you should list out the columns you want
from measurements m join
sensors s
on s.id = m.sensor_id join
providers p
on p.id = s.provider_id
where p.id = 1
limit 100
在我看来,你的FROM条款是错误的。 它应该是:
FROM
measurements
JOIN sensors on sensors.id = measurements.sensor_id
JOIN providers on providers.id = sensor.provider_id
或者
FROM
measurements,
sensors,
providers
WHERE
providers.id = 1 and
sensors.provider_id = providers.id
measurements.sensor_id = sensors.id
您当前包含了所需的3个表,但除此之外,您又加入了传感器和提供商表,总共提供了5个表(据我所知)。在我看来,您的FROM子句是错误的。 它应该是:
FROM
measurements
JOIN sensors on sensors.id = measurements.sensor_id
JOIN providers on providers.id = sensor.provider_id
或者
FROM
measurements,
sensors,
providers
WHERE
providers.id = 1 and
sensors.provider_id = providers.id
measurements.sensor_id = sensors.id
您当前包含了您想要的3个表,但除此之外,您又加入了传感器和提供商表,总共有5个(据我所知)