Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
SQL在postgresql上跨多个表连接_Sql_Postgresql_Join - Fatal编程技术网

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个(据我所知)