我使用的是MySQL 5.0.88/Coldfusion8
,我有一个包含基于条形码/ EAN的产品的表格。如何仅在组中的每条记录符合MySQL中的某个条件时才选择分组记录?
所以在尺寸S,M,L,XL
产品123将有四个表中的记录
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)
该工程确定和选择所有产品哪些没有卖完(总和> 0在所有的东西)/总是可用
我现在想添加一个功能因此用户可以搜索产品,每个尺寸至少有1个尺寸为。在这种情况下,风格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(*))
解决方案:
Partenthesis mising:
HAVING ((sum(a.bestand) != 0) OR (a.nos = "ja" AND a.nos_anzeige = "ja"))
AND (SUM(a.bestand > 0) = gesamt_datensaetze )
这工作。
没问题。这听起来也不错。尝试 – frequent
@frequent我的查询是否能解决问题? – Jocelyn
仍然想知道该怎么做的结果。给我一分钟 – frequent