我正在尝试创建一个查询,该查询将从表parties
中获取结果。该表包含两个外键,我在“映射”这些外键时遇到了麻烦。
对于第一个外键,我需要将我的host_id
列映射到人users.name
的实际姓名。
我能够通过以下方式解决此问题:
SELECT parties.*,users.name as host_name
FROM parties
INNER JOIN users ON parties.host_id = users.id
我的第二个外键是一个名为guests
的表,该表具有一个名为party_refer
的FK,该表引用了parties.id
。
以下查询将我的来宾作为结果的一部分(通过在结果中附加我的所有来宾表列)
SELECT parties.*,users.name as host_name,guests.*
FROM parties
INNER JOIN users ON parties.host_id = users.id
INNER JOIN guests ON parties.id = guests.party_refer
我想修改第二个INNER JOIN,以便将(select * from guests
)的结果作为称为Guests
的单个列返回,并将结果表示为JSON。
我相信我需要使用array_to_json(array_agg(row_to_json()))
,但是我已经尝试了好几个小时才能让它运气好。