我有一个3表产品,sku和选项
产品
ID FlatID Name
314E5E5E-0A7E-4DC5-872C-16DA8DA36439 0706 Jacket
SKU
ID productID QTY
6CFE849A-4856-43E8-9837-3B1D1122A701 314E5E5E-0A7E-4DC5-872C-16DA8DA36439 1
F76C9B5B-CEB5-44FE-AD27-69C4A3C124AE 314E5E5E-0A7E-4DC5-872C-16DA8DA36439 1
BB413DE8-E310-4393-95E9-8262D6EE515A 314E5E5E-0A7E-4DC5-872C-16DA8DA36439 1
866CD899-F25F-4C4D-9E56-A4A95A7BDC5D 314E5E5E-0A7E-4DC5-872C-16DA8DA36439 1
选项
skuid OptionID name
6CFE849A-4856-43E8-9837-3B1D1122A701 1C823E53-EE98-4B22-8118-287BCA55C4D8 BK
6CFE849A-4856-43E8-9837-3B1D1122A701 6D7168A0-775A-4C5B-B8E8-8CE3AF8A8665 LG
F76C9B5B-CEB5-44FE-AD27-69C4A3C124AE 1C823E53-EE98-4B22-8118-287BCA55C4D8 BK
F76C9B5B-CEB5-44FE-AD27-69C4A3C124AE F6A0974C-303D-4C6A-8CE1-39071C7DF566 MD
BB413DE8-E310-4393-95E9-8262D6EE515A FB4D7BC1-6C71-4E00-8C85-0DE93DC1C531 SM
BB413DE8-E310-4393-95E9-8262D6EE515A 1C823E53-EE98-4B22-8118-287BCA55C4D8 BK
866CD899-F25F-4C4D-9E56-A4A95A7BDC5D F6E0FB61-047E-4356-B085-630B38CBC7F2 XL
如何选择没有选项的SKU - 例如在这种情况下,SKU 866CD899-F25F-4C4D-9E56-A4A95A7BDC5D
没有名称为BK的颜色选项 - 但应该。
有时产品(SKU)有一个或两个或三个选项 - 以及如何找到没有选项的SKU - 可能需要获得最大数量和比较但我不知道。 THANX
例如,一个产品有2个sku,其中一个有树选项 - 另一个有一个选项如何显示没有SKU的最大选项
答案 0 :(得分:2)
我通常更喜欢左外连接来解决这个问题,你得到表A中的所有行,在这种情况下是SKU,无论B或选项中是否匹配。然后使用where子句过滤掉匹配,这样你只剩下没有选项的skus。
SELECT SKU.*
FROM SKU
LEFT OUTER JOIN Options
ON Options.skuid = SKU.id
WHERE Options.skuid IS NULL
答案 1 :(得分:0)
您不想要任何选项表的详细信息,只需要检查选项表中是否存在skuid所以..
SELECT *
FROM sku A
WHERE NOT EXISTS (SELECT 1
FROM options
WHERE options.skuid = A.skuid)