添加带有示例数据的字段

时间:2019-05-01 00:46:25

标签: sql postgresql

我正在创建sql查询以获取特定记录。 我需要使用site_name; device_name列进行记录,在其中列出所有站点,并为每个站点使用一个示例设备。

t1:包含以下字段的view_building_custom_fields_flat_v1:building_fk,site_name

t2:view_building_v1,其字段为:building_pk,device_fk

t3:view_device_v1,其中包含以下字段:device_pk,building_fk,device_name

t1是t2的帮助表,因此关系是一对一的,但是建筑物具有多个设备,因此关系是一对多的。

我已经建立了一个查询,列出了到目前为止每个建筑物的所有设备:

SELECT
 view_building_custom_fields_flat_v1.site_name,
 view_device_v1.device_name
FROM view_building_custom_fields_flat_v1
INNER JOIN view_building_v1 ON view_building_custom_fields_flat_v1.building_fk=view_building_v1.building_pk
INNER JOIN view_device_v1 ON view_building_v1.building_pk=view_device_v1.building_fk
ORDER BY view_building_custom_fields_flat_v1.site_name ASC

我知道我的代码对我无能为力,但是如果有人可以帮助我对其进行修改以满足我的要求,那将是很棒的事情。

1 个答案:

答案 0 :(得分:0)

如果您希望每site_name行,可以使用DISTINCT ON

SELECT DISTINCT ON (cff.site_name) cff.site_name, d.device_name
FROM view_building_custom_fields_flat_v1 cff JOIN 
     view_building_v1 b
     ON cff.building_fk = b.building_pk JOIN
     view_device_v1 d
     ON b.building_pk = d.building_fk
ORDER BY cff.site_name ASC;