2016-01-17 48 views
1

我在Postgresql中有2個表。這兩個都有不同的架構。我想要的輸出在共享屏幕截圖。在Postgresql中與2個不同的表加入1個表

假設,對於字段HDRConfig,如果輸出值是SE,那麼我希望輸出爲軟件工程而不是SE。我如何顯示這些列與其餘的列即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  ║ 
╚═══════════════════════╩═══════════════════════╩══════════════════════╝ 

使用CORREL 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