2011-08-05 16 views
0

私はオーダーのテーブルとマテリアル(1:N)のテーブルを持っています。 特定の製造指図と国の品目テーブルに何階注文があるか知りたい。グループ化して内部結合を使用してカウントする

下部のクエリは私に代わりに予想される結果5の各注文の注文あたりの画面の数量を与える:

6 
1 
6 
2 
2 

SELECT Count(ORD.ORDERNUMMER) 
FROM  Orders AS ORD 
INNER JOIN Material AS KP ON KP.Ordernummer = ORD.Ordernummer 
WHERE (KP.SOORT = 'SCREEN') AND ORD.PRODUCTIEORDER = '201132' AND ORD.LAND = 'Belgie' 
Group By ORD.Ordernummer HAVING (COUNT(*) >= 1) 

私はちょうど5が戻ってきたいと思います。事前に

おかげで、

マイク

答えて

2

あなたはそれがスクリーンである材料の少なくとも一つのラインを持っている場合、各個別の順序をカウントする必要があります。

SELECT Count(DISTINCT ORD.ORDERNUMMER) 
FROM  Orders AS ORD 
INNER JOIN Material AS KP ON KP.Ordernummer = ORD.Ordernummer 
WHERE (KP.SOORT = 'SCREEN') AND ORD.PRODUCTIEORDER = '201132' AND ORD.LAND = 'Belgie' 
1

あなたが全体の合計が必要な場合ではないグループの結果を実行してください!

SELECT Count(ORD.ORDERNUMMER) as totalScreens 
FROM Orders AS ORD 
INNER JOIN Material AS KP ON KP.Ordernummer = ORD.Ordernummer 
WHERE (KP.SOORT = 'SCREEN') AND ORD.PRODUCTIEORDER = '201132' AND ORD.LAND = 'Belgie' 
HAVING (totalScreens >= 1) 
+0

COUNT(DISTINCT)を除いてグループを削除すると、5の代わりに17が返されます。 – niktrs

+0

本当に分かりますか?私たちは 'SUM()'について話していません – VAShhh

+0

結果が表示されている場合は5つの注文があり、その数は各商品の画面の行数です。 – niktrs