餐桌上的人
ID | NAME | PHNO |ADDRESS_TYPE
1 | XXXX | 999 | HOME
2 | YYYY | 888 | OFFICE
表家庭地址
ID PERSON_ID ADDRESS
1 | 1 | XXXXXXXXXXX
办公桌地址
ID PERSON_ID ADDRESS
1 | 2 | XXXXXXXXXXX
在这里,我希望查询根据ADDRESS_TYPE将HOME_ADDRESS和OFFICE_ADDRESS连接起来,从table PERSON获取记录,如果ADDRESS_TYPE是HOME,那么它应该从table HOME_ADDRESS获取地址详细信息其他明智的地址详细信息应该来自table OFFICE_ADDRESS。
我正在使用postgresql数据库。
最佳答案
这是mssql sintax,但是试试这个:
select p.*, CASE WHEN p.ADDRESS_TYPE = 'HOME' THEN h.ADDRESS ELSE o.ADDRESS END from Person p
LEFT OUTER JOIN HOME_ADDRESS h on p.Id = h.PERSON_ID AND p.ADDRESS_TYPE = 'HOME'
LEFT OUTER JOIN OFFICE_ADDRESS o on p.ID = o.PERSON_ID AND p.ADDRESS_TYPE= 'OFFICE'
关于sql - 如何编写查询以基于表A的一列值将表A连接到表B或C?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34014291/