sql - 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
请协助。非常感激!
解决方案
尝试这个。
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';
推荐阅读
- java - spring-boot web 应用程序无法启动:由于缺少 ServletWebServerFactory bean,无法启动 ServletWebServerApplicationContext
- python - 分类日历图
- c++ - 模板化自动工厂注册
- javascript - 为什么我的 React 组件状态会显示在我的 url 中?
- c - 当我将缓冲区传递给 OpenCL 内核并且缓冲区来自 clCreateFromGLTexture 时,如何修复 CL_INVALID_MEM_OBJECT?
- lambda-calculus - 这个 lambda 演算的标准形式是什么,是否有任何自由变量?
- python-3.x - 无法在 Spyder 中导入 tensorflow,但它在 python 中导入
- android - android在使用ArrayAdapter时如何分配textViewResourceId
- mysql - 为什么我的数据与 mysql db 中的错误列相关联?
- bash - 获取目录中文件的大小