微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL 中为选择所有链接表数据编写 SQL 查询的简单方法

如何解决PostgreSQL 中为选择所有链接表数据编写 SQL 查询的简单方法

当表链接在一起时,我想返回通过外键链接在一起的所有表的数据。是否有一个简单的 sql 命令?

样本数据:入口有 floor_id fk 到楼层表,楼层表有 building_id fk 到建筑物,建筑物有 company_id fk 到公司。

仅凭入口 id 是否可以获取上述所有数据?

有没有比下面的 sql 更优雅的方法来做到这一点:

    SELECT * FROM floor_entrance 
    LEFT JOIN floor ON floor.id = (SELECT floor_id FROM floor_entrance WHERE id = {floor_entrance_id})
    LEFT JOIN building ON building.id = (SELECT building_id FROM floor WHERE id = 
        (SELECT floor_id FROM floor_entrance WHERE id = {floor_entrance_id}))
    LEFT JOIN company ON company.id = (SELECT company_id FROM building WHERE id = 
        (SELECT building_id FROM floor WHERE id = 
            (SELECT floor_id FROM floor_entrance WHERE id = {floor_entrance_id})))
    WHERE floor_entrance.id = {floor_entrance_id}

我正在寻找一种简洁的方式来编写这个 postgresql 命令。

预期结果:“在整个架构中的所有外键上都加入左键”?

解决方法

我就这么干

SELECT * FROM floor_entrance A
LEFT JOIN floor B ON A.floor_id = B.id 
LEFT JOIN building C ON B.building_id = C.id 
LEFT JOIN company D ON C.company_id = D.id 
WHERE A.id = {floor_entrance_id}
,

似乎没有一种简单的方法可以做到这一点。然而,@Alexis.Rolland 的答案是一种巧妙的方法,即使您必须手动加入每个表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。