我正在创建 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
我知道对于我的代码,我不能指望别的,但如果有人能帮助我修改它以满足我的要求,我会很棒。
最佳答案
如果您希望每个 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;
关于sql - 添加带有示例数据的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55930374/