首页 > 解决方案 > SQL 连接 postgresql 上的许多表

问题描述

我有一个表结构如下:

measurements:

id | Value | sensor_id

现在我有另一个表叫做传感器

sensors:
id | Name | provider_id

然后我有另一个名为 Providers 的表:

providers:
id | Name

现在我想做的是从测量表中选择 sensor_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

但是,这又回来了,There is an entry for table "sensor_measurements", but it cannot be referenced from this part of the query.我已经尝试了其他类型的变体,但无法使其正常工作。

我正在使用 Postgresql 并使用 PgAdmin 工具。

标签: sqlpostgresqljoin

解决方案


切勿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

推荐阅读