2016-01-17 45 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