我有这张桌子:
| id_product | tw_kod | ean |nazwa |stan |cena_detaliczna |
| 1 | 9007 | 9008 | ARR 2016 | 2 | 2490|
| 2 | 9008 | 90085| ION 2018 | NULL | 1450|
和这个查询:
select
tw.id as id_product,
tw.kod as tw_kod,
tw.kod as ean,
tw.nazwa as nazwa,
sm.stanHandl as stan,
cn.cena as cena_detaliczna
from
[HM].[TW] as tw
join
[SSCommon].[STElements] as elem on tw.znacznik = elem.Shortcut
left join
[HM].[SM] as sm on tw.id = sm.idtw
left join
[HM].[CN] as cn on tw.id = cn.idpm
where
elem.Shortcut = '66'
and elem.ElementKindId = '54'
--and sm.magazyn = 2
and cn.typceny = 1
order by
nazwa
有些产品在[HM]。[SM]表中,有些 - 不是。我使用LEFT JOIN [HM]。[SM]来显示[HM]。[TW]中的所有产品,但是当我使用WHERE子句(sm.magazyn = 2)时它没有显示我的产品,这就是为什么我评论它。我试图在WHERE中使用IF ELSE,但我没有正确的结果。感谢
答案 0 :(得分:3)
只需在FROM
部分添加谓词,如下所示:
select
tw.id as id_product,
tw.kod as tw_kod,
tw.kod as ean,
tw.nazwa as nazwa,
sm.stanHandl as stan,
cn.cena as cena_detaliczna
from [HM].[TW] as tw
join [SSCommon].[STElements] as elem on tw.znacznik = elem.Shortcut
left join [HM].[SM] as sm on tw.id = sm.idtw and sm.magazyn = 2
left join [HM].[CN] as cn on tw.id = cn.idpm and cn.typceny = 1
where
elem.Shortcut = '66'
and elem.ElementKindId = '54'
order by nazwa
对NULL
的同情导致空结果集