簡體   English   中英

SQL在PostgreSQL上的許多表中聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM