私が使用MySQL 5.0.88/Coldfusion8
していて、バーコード/EAN に基づく製品を含むテーブルがあります。
したがって、サイズS,M,L,XL
が 123 の製品の場合、テーブルには 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)/常に入手可能です
機能を追加して、ユーザーが各サイズで少なくとも 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>
質問:各原資産の数量が 0より大きい場合にのみ、
グループ化して含めることはまったく可能ですか? もしそうなら、ポインタをありがとう!style
style
ean
編集:
これが私の完全なクエリです。これをテストしています:
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 )
これは機能します。