2016-01-17 4 views
1

У меня есть 2 стола в Postgresql. Оба они находятся в другой схеме. Я хочу результат как в общем снимке экрана.Соедините 1 таблицу с 2 различными таблицами в Postgresql

Предположим, что для поля HDRConfig, если выходным значением является SE, тогда я хочу, чтобы выход использовался как Software Engineering, а не SE. Как показать их с остальными столбцами i.e HDRConfig, AbrConfig & SbrConfig?

enter image description here

+0

http://meta.stackoverflow.com/q/271055/330315 –

ответ

1

Простой LEFT JOIN:

SELECT l0.Code_Desc AS HDRConfig, 
     l1.Code_Desc AS AbrConfig, 
     l2.Code_Desc AS SbrConfig 
FROM Equipment e 
LEFT JOIN Lookup l0 
    ON e.HDRConfig = l0."Code" 
LEFT JOIN Lookup l1 
    ON e.AbrConfig = l1."Code" 
LEFT JOIN Lookup l2 
    ON e.SbrConfig = l2."Code"; 

SqlFiddleDemo

╔═══════════════════════╦═══════════════════════╦══════════════════════╗ 
║  hdrconfig  ║  abrconfig  ║  sbrconfig  ║ 
╠═══════════════════════╬═══════════════════════╬══════════════════════╣ 
║ Software Engineering ║ Software Engineering ║ Software Engineering ║ 
║ (null)    ║ Analog System   ║ Floppy Primary  ║ 
╚═══════════════════════╩═══════════════════════╩══════════════════════╝ 

Использование КОРРЕЛ ETAD подзапросов (неэффективный):

SELECT 
    (SELECT Code_desc FROM Lookup WHERE "Code" = e.HDRConfig) AS HDRConfig, 
    (SELECT Code_desc FROM Lookup WHERE "Code" = e.ABRConfig) AS ABRConfig, 
    (SELECT Code_desc FROM Lookup WHERE "Code" = e.SbrConfig) AS SbrConfig 
FROM Equipment e; 

SqlFiddleDemo2

Смежные вопросы