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 的答案是一种巧妙的方法,即使您必须手动加入每个表。