gpt4 book ai didi

mysql - MySQL中如何只在组中的每条记录都满足特定条件时才选择分组记录?

转载 作者:行者123 更新时间:2023-11-29 05:34:11 25 4
gpt4 key购买 nike

我正在使用 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)

这可以正常工作并选择所有未售罄的产品(总和 > 0 所有 eans)/始终可用

我现在想添加一个功能,让用户可以搜索每种尺寸至少有 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 分组,并且仅在每个基础 ean 的数量 > 0 时包含 style?如果可以,多谢指点!

编辑:
这是我正在测试的完整查询:

   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 )

这有效。

最佳答案

我建议以下查询:

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))
AND (SUM(qty>0) = total_records)

我添加到查询的最后一个条件仅在该产品的尺码数 (total_records) 等于该产品的可用尺码数 ( SUM(数量>0)).
qty>0 将返回 0(当给定尺寸的产品不可用时)或 1(当它可用时)。因此 SUM(qty>0) 将返回一个介于 0 和尺寸总数之间的整数。

关于mysql - MySQL中如何只在组中的每条记录都满足特定条件时才选择分组记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com