0

ブール値を持つテーブルがあり、ID のグループに両方の値があるかどうかを調べたいと考えています。

この SQL は、テストする製品のグループを選択します。

SELECT 
  cp.ItemID,
  cp.IsUnitsOfMeasure
from grouped_products gp
LEFT JOIN products p ON p.product_id = gp.product_id
LEFT JOIN c_products cp ON cp.ItemID = p.product_id
WHERE gp.group_id=123

グループの cp.IsUnitsOfMeasure に 1 と 0 の両方が含まれているかどうかを調べたい。

4

2 に答える 2

1

これを試して:

SELECT 
    cp.ItemID,
    SUM(cp.IsUnitsOfMeasure) AS sum,
    COUNT(cp.IsUnitsOfMeasure) AS count,
    from grouped_products gp
LEFT JOIN products p ON p.product_id = gp.product_id
LEFT JOIN c_products cp ON cp.ItemID = p.product_id
WHERE gp.group_id=123
  • sum等しい場合count、すべての行が 1 になります
  • が 0 の場合sum、すべての行が 0 になります
  • 他のすべての場合: グループに 1 と 0 の両方があります
于 2012-05-11T10:08:27.073 に答える
0
SELECT   gp.group_id,
         SUM(cp.IsUnitsOfMeasure=0) AND SUM(cp.IsUnitsOfMeasure=1) AS ContainsBoth,
FROM     grouped_products AS gp
  LEFT JOIN products      AS  p USING (product_id)
  LEFT JOIN c_products    AS cp ON cp.ItemID = p.product_id
GROUP BY gp.group_id

ContainsBothまたはは、それぞれのグループにwith別のwith の両方TRUEが含まれているかどうかを示します。FALSEc_productIsUnitsOfMeasure=0 =1

于 2012-05-11T10:09:20.557 に答える