我正在使用MySQL 5.0.88/Coldfusion8
并且我有一个包含基于条形码/EAN 的产品的表。
所以一个大小为 123 的产品在S,M,L,XL
表中会有 4 条记录
product size ean qty disregard_inventory
123 S 1111111111111 5 0
123 M 1111111111112 7 0
123 L 1111111111113 1 0
123 XL 1111111111114 2 0
现在我正在像这样搜索这张表:
SELECT count(a.id) AS total_records, a.disregard_inventory, a.qty
FROM artikelstammdaten a
...
GROUP BY a.style
HAVING sum(a.qty) != 0 OR (a.disregard_inventory = 1)
这可以正常工作并选择所有未售罄的产品(所有 eans 的总和 > 0)/始终可用
我现在想添加一个功能,以便用户可以搜索每个尺寸至少有 1pc 的产品。在这种情况下,样式 123
123 S 1
123 M 0
123 L 12
123 XL 9
size M
由于已售罄,因此不会包含在结果集中。
但是我无法让它工作。这就是我所拥有的(产生垃圾):
GROUP BY a.style
<cfif form.select_type EQ "running_sizes">
HAVING a.qty!= 0 OR ( a.disregard_inventory = 1 )
<cfelse>
HAVING sum(a.bestand) != 0 OR (a.disregard_inventory = 1)
</cfif>
问题:
是否有可能进行分组,style
并且仅style
在每个底层证券ean
的数量 > 0 时才包括在内?如果是这样,谢谢指点!
编辑:
这是我正在测试的完整查询:
SELECT count(a.id) AS gesamt_datensaetze, a.nos, a.nos_anzeige, a.bestand, SUM(a.bestand>0) AS what
FROM artikelstammdaten a
WHERE a.aktiv = "ja"
AND a.firma LIKE "some_company"
// groups by seller_id, style
GROUP BY a.iln, a.artikelnummer
HAVING sum(a.bestand) != 0 OR (a.nos = "ja" AND a.nos_anzeige = "ja")
AND ( SUM(a.bestand > 0) = COUNT(*))
解决方案:
括号缺失:
HAVING (( sum(a.bestand) != 0 ) OR (a.nos = "ja" AND a.nos_anzeige = "ja" ))
AND ( SUM(a.bestand > 0) = gesamt_datensaetze )
这行得通。