首页
学习
活动
专区
工具
TVP
发布

Join问题
EN

Stack Overflow用户
提问于 2019-06-27 07:07:02
回答 2查看 33关注 0票数 0

我在主细节布局中有两个表。我只想从主表和详细记录中选择所有符合条件的激活项目。但我想要所有的主表项目,无论id是否存在详细记录。

我的表看起来像: Master - inventoryItem

代码语言:javascript
复制
icmasterid  icdescription
WAD110795       WM KIWI-KLIP 3 BEND                    
WAD110796       WM KIWI-KLIP 3 BEND (MZ3,4,&6)                    
WAD118806-50    STROLLER VALENCE BACKDRP HINGE                    
WAD118808       IK STROL B DROP MOUNTING HDW    
WAD118942       1" S-HOOK BAG 100                                 

详细信息- inventoryLine

代码语言:javascript
复制
icmasterid  icdetailquantity    pomasterid
WAD110796               -900    NULL
WAD110796                  0    NULL
WAD110796                  0    119450
WAD110796                900    119347
WAD118808                  0    NULL
WAD118808                 34    NULL
WAD118942                  0    NULL
WAD118942                 59    NULL
WAD118942                  0    NULL
WAD118942                -59    NULL
WAD118942                 59    NULL

我的sql

代码语言:javascript
复制
SELECT inventoryitem.icmasterid,
       inventoryitem.icdescription,
       inventoryline.icdetailquantity,inventoryline.pomasterid
FROM  inventoryitem 
      LEFT OUTER JOIN inventoryline ON inventoryitem.icmasterid=inventoryline.icmasterid 
WHERE inventoryitem.icmasterid < 'WAD18' and inventoryitem.icmasterid like 'WAD%' 
ORDER BY inventoryitem.icmasterid

上面的代码如期给出了inventoryitem中的所有项目及其相关的inventoryline记录。

但当我添加

代码语言:javascript
复制
and inventoryline.pomasterid <> ''

我只有两排。

代码语言:javascript
复制
icmasterid  ICdescription                      icdetailquantity   pomasterid
WAD110796   WM KIWI-KLIP 3 BEND (MZ3,4,&6)                  0   119450
WAD110796   WM KIWI-KLIP 3 BEND (MZ3,4,&6)                900   119347

我需要的是

代码语言:javascript
复制
icmasterid     icdescription                      icdetailquantity  pomasterid
WAD110796      WM KIWI-KLIP 3 BEND (MZ3,4,&6)                    0  119450
WAD110796      WM KIWI-KLIP 3 BEND (MZ3,4,&6)                  900  119347
WAD118806-50   STROLLER VALENCE BACKDRP HINGE                  NULL NULL
WAD118808      IK STROL B DROP MOUNTING HDW                    NULL NULL
WAD118942      1" S-HOOK BAG 100                               NULL NULL
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-27 07:50:45

根据Tim Biegeleisen的回答,我得出了这个结论。

代码语言:javascript
复制
SELECT
    ii.icmasterid,
    ii.icdescription,
    ii.icdetailquantity,inventoryline.pomasterid
FROM inventoryitem ii
LEFT JOIN inventoryline il
    ON ii.icmasterid = il.icmasterid AND and inventoryline.pomasterid <> ''
WHERE
    ii.icmasterid < 'WAD18' AND
    ii.icmasterid LIKE 'WAD%' 
ORDER BY
    ii.icmasterid;
票数 0
EN

Stack Overflow用户

发布于 2019-06-27 07:09:48

WHERE子句中的逻辑移动到ON子句:

代码语言:javascript
复制
SELECT
    ii.icmasterid,
    ii.icdescription,
    ii.icdetailquantity,inventoryline.pomasterid
FROM inventoryitem ii
LEFT JOIN inventoryline il
     ON ii.icmasterid = il.icmasterid AND
        -- SUBSTRING(ii.icmasterid, 4, 2) < '18' AND
        ii.icmasterid LIKE 'WAD%' 
ORDER BY
    ii.icmasterid;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56781977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档