[英]SQL joins across many tables on postgresql
我有一個表結構如下:
measurements:
id | Value | sensor_id
現在我有另一個表叫做傳感器,
sensors:
id | Name | provider_id
然后我有另一個表稱為提供者:
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工具。
請勿在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個表,但除此之外,您又又加入了sensor和provider表,總共有5個(據我所知)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.