如果不是计数则选择

时间:2014-10-24 10:14:14

标签: sql sql-server tsql count

我有一个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的最大选项

2 个答案:

答案 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)