[英]sql check if rows are subset of another table
will you help my problem? 你能帮我解决问题吗? I have a tblProduct which is a bill of material for producing items with decal.
我有一个tblProduct,这是用于生产贴花物品的物料清单。 tblStock is the available decal that is in stock.
tblStock是库存中的可用贴花。 I need a query to check which product can be manufactured based on the available decal.
我需要查询以根据可用的贴花检查可以生产哪些产品。 The product can only be produced if all the decals are available.
只有在所有贴花都可用的情况下才能生产产品。 Thanks so much in advanced
非常感谢高级
tblProduct tbl产品
Id decal_1 decal_2 decal_3
1 111 121 144
2 104 106 144
3 121 144 163
4 122 144 163
5 (null) 163 191
6 104 121 163
tblStock tblStock
Available_decal
111
121
144
163
191
Desired Output 期望的输出
Id
1
3
5
Note that there is a null in number 5. this complicates the matter 请注意,数字5为空。这会使问题复杂化
An IN
check should do it IN
支票应该做
SELECT
*
FROM
tblProduct
WHERE
(decal_1 IS NULL OR decal_1 IN (SELECT Available_decal FROM tblStock))
AND (decal_2 IS NULL OR decal_2 IN (SELECT Available_decal FROM tblStock))
AND (decal_3 IS NULL OR decal_3 IN (SELECT Available_decal FROM tblStock))
Another way with EXISTS
: EXISTS
另一种方式:
SELECT
*
FROM
tblProduct
WHERE
(decal_1 IS NULL OR EXISTS (SELECT 1 FROM tblStock WHERE Available_decal = decal_1))
AND (decal_2 IS NULL OR EXISTS (SELECT 1 FROM tblStock WHERE Available_decal = decal_2))
AND (decal_3 IS NULL OR EXISTS (SELECT 1 FROM tblStock WHERE Available_decal = decal_3))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.