代码之家  ›  专栏  ›  技术社区  ›  SteveSong

如何在一条SQL语句中两次查询postgresql表

  •  1
  • SteveSong  · 技术社区  · 9 年前

    是非洲光纤网络项目清单,包括以下关键领域:

    • _geom<-光纤网络图
    • 操作员id<-网络运营商的唯一id
    • 所有者id<-网络所有者的唯一id

    af_组织 是一个表格,提供了有关af_fibrephase中引用的组织的更详细信息。我为运营商和业主组织使用了一个表,因为它们有时是同一件事,有时不是。af_组织的关键领域包括:

    • 组织id<-键参考字段
    • web\u url<-组织的url

    SELECT af_fibrephase.* 
    FROM af_fibrephase AS fibre
    INNER JOIN af_organisation AS org1 on fibre.operator_id = org1.organisation_id
    INNER JOIN af_organisation AS org2 on fibre.owner_id = org2.organisation_id
    

    实际表格见 af_fibrephase af_organisation 在…上 https://carto.com

    2 回复  |  直到 9 年前
        1
  •  1
  •   Shawn    9 年前

    见上述评论。使用af_组织的左外连接和别名所需字段。

    SELECT fibre.*
        , org1.name AS operator_name
        , org1.web_url AS operator_web_url
        , org1.<etc> AS operator_<etc>
        , org2.name AS owner_name
        , org2.web_url AS owner_web_url
        , org2.<etc> AS owner_<etc>
    FROM af_fibrephase AS fibre
    LEFT OUTER JOIN af_organisation org1 on fibre.operator_id = org1.organisation_id
    LEFT OUTER JOIN af_organisation org2 on fibre.owner_id = org2.organisation_id
    
        2
  •  1
  •   juergen d    9 年前
    SELECT fibre.*, 
           org1.name as org1_name,
           org2.name as org2_name
    FROM af_fibrephase AS fibre
    LEFT JOIN af_organisation AS org1 on fibre.operator_id = org1.organisation_id
    LEFT JOIN af_organisation AS org2 on fibre.owner_id = org2.organisation_id