这个问题是基于:Select row from left join table where multiple conditions are true选择在使用时不工作=在WHERE子句(使用GROUP BY和HAVING COUNT)
我现在试图选择从表1行,不具有在连接表2给出了某个属性ID。
这些是表:
表1
| ID | Name |
| 1 | test |
| 2 | hello |
表2
| ID | PropertyID |
| 1 | 3 |
| 1 | 6 |
| 1 | 7 |
| 2 | 6 |
| 2 | 1 |
我使用下面的查询(这正与 '=') :
SELECT tab1ID
FROM table2
WHERE propertyID != 3 OR propertyID = 6
GROUP BY tab1ID
HAVING COUNT(*) = 2;
该查询应返回ID = 2,但它返回零行。我做错了什么?
任何帮助,非常感谢!
编辑:我曾经给一个MWE,但是这是我的实际查询:
SELECT transactionline.total FROM transactionline
LEFT JOIN product_variant ON product_variant.SKU = transactionline.SKU
LEFT JOIN product ON product_variant.productID = product.productID
LEFT JOIN connect_option_product ON connect_option_product.productID = product.productID
LEFT JOIN productattribute_option ON productattribute_option.optionID = connect_option_product.optionID
WHERE productattribute_option.optionID = 4 OR productattribute_option.optionID = 9
GROUP BY transactionline.lineID
HAVING COUNT(*) = 1
AND SUM(productattribute_option.optionID = 4) = 0
AND SUM(productattribute_option.optionID = 9) > 0
产品可以具有对optionID的多个连接。此查询的目标是选择某些过滤器为true或false的总量。
它应该返回2,而不是1,对不对? – 2015-02-09 10:40:40
谢谢你提到,我的坏! – bashoogzaad 2015-02-09 10:41:24
它也应该retirm ID = 1或我在这里错过了什么?无论如何在[SQLFiddler](http://sqlfiddle.com/#!3/6e722/2)它适用于我 – mucio 2015-02-09 10:47:09