LEFT JOIN的问题
碰到一个奇怪问题
SELECT 物料编码ID,物料编码,物料名称,规格型号,计量单位,仓库ID,仓库名称,供应商名称,供应商价格,市场名称,市场价格,MAX(fprice) AS 最高价格,MIN(fprice) AS 最低价格,AVG(fprice) AS 平均价格,
供应商地区,市场地区
INTO #RK1 FROM #RK
LEFT JOIN ICSTOCKBILLENTRY ICE ON ICE.FITEMID=#RK.物料编码ID AND ICE.fdcstockid=#RK.仓库ID
LEFT JOIN ICSTOCKBILL IC ON IC.FINTERID=ICE.FINTERID
WHERE IC.FTRANTYPE=1 AND IC.FDATE> =@DATE5 AND IC.FDATE <=@DATE6
GROUP BY 物料编码ID,物料编码,物料名称,规格型号,计量单位,供应商名称,市场名称,仓库名称,仓库ID,供应商价格,市场价格,市场地区,供应商地区
ORDER BY 物料编码
按理说显示的物料应该是#RK表中所有的物料,但是执行后发现物料少了一行
LEFT JOIN ICSTOCKBILLENTRY ICE ON ICE.FITEMID=#RK.物料编码ID AND ICE.fdcstockid=#RK.仓库ID,这个地方必须要以物料和仓库做关联条件
我一直怀疑是这个地方有问题
大家帮忙看一下,谢谢
[解决办法]
如果用left join ,则不要对右边的表进行where 限制,使用子查询,如下:
select *
from A
left join (select * from B where ...) T on a.id=t.id
where A....