请针对我在以下查询中做错的事情为我提供建议
场景:
数据在三个表中,一个表包含完整的记录,另外两个表缺少记录,我想基于表A(其中所有记录都存在)进行查询,而另外两个表则像excel(index match)问题是它正在正确过滤数据,但仅显示所有数据在所有三个表中都匹配的那些记录,我希望查询显示数据,即使仅在一个表中也可用。
我到目前为止生成的查询:
SELECT primaryitemtable.itemcode,
primaryitemtable.itemdescription,
primaryitemtable.article,
itembatchlist.batchno,
Sum(tempscmstock.qty) AS SumOfQty,
Sum(stockmastertemp.qty) AS SumOfQty1,
tempscmstock.batch,
stockmastertemp.batch
FROM (stockmastertemp
INNER JOIN (tempscmstock
INNER JOIN primaryitemtable
ON tempscmstock.itemcode =
primaryitemtable.itemcode)
ON ( stockmastertemp.itemcode = primaryitemtable.itemcode )
AND ( stockmastertemp.itemcode = primaryitemtable.itemcode ))
INNER JOIN itembatchlist
ON primaryitemtable.itemcode = itembatchlist.itemcode
GROUP BY primaryitemtable.itemcode,
primaryitemtable.itemdescription,
primaryitemtable.article,
itembatchlist.batchno,
tempscmstock.batch,
stockmastertemp.batch
HAVING ( ( ( tempscmstock.batch ) = [itembatchlist] ! [batchno] )
AND ( ( stockmastertemp.batch ) = [itembatchlist] ! [batchno] ) )
ORDER BY primaryitemtable.itemcode;
[]
答案 0 :(得分:0)
尝试左联接,因为内部联接仅返回每个表具有相同数据的记录
SELECT primaryitemtable.itemcode,
primaryitemtable.itemdescription,
primaryitemtable.article,
itembatchlist.batchno,
Sum(tempscmstock.qty) AS SumOfQty,
Sum(stockmastertemp.qty) AS SumOfQty1,
tempscmstock.batch,
stockmastertemp.batch
FROM (stockmastertemp
LEFT JOIN (tempscmstock
LEFT JOIN primaryitemtable
ON tempscmstock.itemcode = primaryitemtable.itemcode)
ON ( stockmastertemp.itemcode = primaryitemtable.itemcode )
AND ( stockmastertemp.itemcode = primaryitemtable.itemcode ))
LEFT JOIN itembatchlist
ON primaryitemtable.itemcode = itembatchlist.itemcode
GROUP BY primaryitemtable.itemcode,
primaryitemtable.itemdescription,
primaryitemtable.article,
itembatchlist.batchno,
tempscmstock.batch,
stockmastertemp.batch
HAVING ( ( ( tempscmstock.batch ) = [itembatchlist] ! [batchno] )
AND ( ( stockmastertemp.batch ) = [itembatchlist] ! [batchno] ) )
ORDER BY primaryitemtable.itemcode