表产品
ProductID | ProductCode | SampleRefNum
1 a1
2 b2
3 c2
表库存清单
StockListID | ProductCode | SampleRefNum | QTY
1 a1 10
2 b2 10
3 j100 25
我要2张桌子。产品表是网站上的当前产品。 库存清单表是从POS系统上传的清单,包含产品及其数量。 产品具有ProductCode或SampleRefNum。
我正在尝试生成产品表中所有项目的列表,这些项目在库存清单表格中没有匹配的ProductCode或SampleRefNum。在下面的例子中,查询应返回ProductID 3。
我正在尝试使用查询来执行此操作,而不是在PHP中循环和检查结果。
答案 0 :(得分:1)
尝试加入这两个表,并从TPOCK_LIST获取ProductCode或SampleRefNum为空的产品
select t1.* from PRODUCTS as t1
left join STOCK_LIST as t2 on t1.ProductID = t2.StockListID
where (t2.ProductCode IS NULL or t2.SampleRefNum is NULL)
答案 1 :(得分:1)
您可以使用左连接来更正结果。
SELECT p.* FROM products AS p
LEFT JOIN stockList AS s
ON p.productID = s.stockListId
OR p.sampleRefNum = s.sampleRefNum;
答案 2 :(得分:0)
Select productId from Products where productId NOT IN(Select p.productId From Products p
INNER JOIN Stocklist s ON ( p.ProductCode=s.ProductCode || p.SampleRefNum=s.SampleRefNum));
我猜productId和Stocklist Id彼此无关,它们只是两个不同表的主键。
请尝试以上查询。
如果我猜错了,请详细说明。
答案 3 :(得分:0)
select table1.id table2.id from table1,table2 where tpl1.id=tpl2.id
之后检查返回数据的num_rows,如果total为0则表示没有东西
答案 4 :(得分:0)
这是正确的答案。它是@Ye Win和웃웃웃웃웃
的一部分SELECT * FROM products AS p
LEFT JOIN stock_list AS s
ON p.ProductCode = s.ProductCode OR p.SampleRefNum = s.SampleRefNum
WHERE (s.ProductCode IS NULL AND p.ProductCode IS NOT NULL OR s.SampleRefNum IS NULL AND p.SampleRefNum IS NOT NULL)