首页 > 解决方案 > 3个表上的SQL左外连接

问题描述

我试图加入 3 个表,但结果显示该列是空数据。请参考以下详细信息,并请告知情况。欣赏它!

我有什么桌子:

1) EXPORT_SHIPMENT
SHPMNT_REF  UPDATE_USER    TYPE
1002            A           CS
1003            B           CA 

2) EXPORT_ONHAND
ONHAND_REF  UPDATE_USER     TYPE   SHPMNT_REF
 50001           A           CS      1002
 50002           B           CA      1003 

3) VW_EXPORT_EVENT_VCB
 FILE_NO    VCB_FA_CREATED_TIME
 50001        2018-07-26          
 50002        2018-07-25               

我做了如下:

SELECT 
    ES.SHPMNT_REF,
    V.VCB_FA_CREATED_TIME
FROM 
    EXPORT_SHIPMENT ES 
LEFT OUTER JOIN
    (SELECT 
         OH.ONHAND_REF,
         VCB.FILE_NO,
         VCB.VCB_FA_CREATED_TIME
     FROM 
         EXPORT_ONHAND OH 
     INNER JOIN 
         VW_EXPORT_EVENT_VCB VCB ON OH.ONHAND_REF = VCB.FILE_NO) AS "V" ON ES.SHPMNT_REF = V.ONHAND_REF
WHERE
    ES.SHPMNT_REF <> '1001'

运行此代码后,“V.VCB_FA_CREATED_TIME”列是空数据。

我想在结果中看到的是:

SHPMNT_REF    VCB_FA_CREATED_TIME
1002               2018-07-26
1003               2018-07-25

请协助。非常感激!

标签: sql

解决方案


尝试这个。

 SELECT 
        ES.SHPMNT_REF,
        V.VCB_FA_CREATED_TIME
    FROM 
        EXPORT_SHIPMENT ES 
    LEFT OUTER JOIN
        (SELECT 
             OH.SHPMNT_REF,
             VCB.FILE_NO,
             VCB.VCB_FA_CREATED_TIME
         FROM 
             EXPORT_ONHAND OH 
         INNER JOIN 
             VW_EXPORT_EVENT_VCB VCB ON OH.ONHAND_REF = VCB.FILE_NO) AS V 
             ON ES.SHPMNT_REF = V.SHPMNT_REF
    WHERE
        ES.SHPMNT_REF <> '1001';

推荐阅读