2011-06-08 6 views
0

私は、単にカウントして正しい値を返すSQLクエリを持っていますが、スライスして別の領域のカウントを取得すると、合計カウントが最初のものと一致しなくなります。 CountyID、CountyName &郵便番号が含まれているSQLの数が異なります

表のジップコードを、:

これは私が得たものです。 ShippingCountry & ShippingZip

最初のカウントが含まれてい

表の受注は、次のようになります。私は3007ウィッヒにこのカウントが正しい取得

SELECT COUNT(STFO.ShippingZip) 
FROM Orders 
WHERE 
AND STFO.intShippingCountryID = 202 
AND STFO.ShippingZip IN (SELECT DISTINCT ZipCode FROM SwedishZipCodes07) 
AND STFO.ShippingZip > 0 

例1で。非常に同じ例で

SELECT DISTINCT CountyName, CountyID, 
(SELECT COUNT(STFO.ShippingZip) 
FROM Orders 
WHERE 
AND STFO.intShippingCountryID = 202 
AND STFO.ShippingZip IN (SELECT DISTINCT ZipCode FROM SwedishZipCodes07 WHERE CountyID = ZipWrapper.CountyID) 
AND STFO.ShippingZip > 0) AS Count 
FROM Zipcodes ZipWrapper 
ORDER BY ZipWrapper.CountyID 

私は今3018 のようにカウント(私の例では、クエリは、より具体的なフィルタリングされますが、それらの両方が一致し、相違:それはもっとこのようになります私の次のカウントで ここで私の単純化されたサンプルコードにあります)。

+0

私は本当にあなたの英語を理解できないのですか? "今のようにカウントされますか?"クエリを結果とともに投稿できますか? – BonyT

+0

はい、2つの異なる手順があります。どこかに質問がありましたか? – mikeY

+0

2つを比較する: 'SELECT DISTINCT ZipCode FROM SwedishZipCodes07'と' SELECT DISTINCT ZipCode FROM SwedishZipCodes07 WHERE CountyID = ZipWrapper.CountyID'を比較してください。それは問題があるかもしれないように見えます。 – Michas

答えて

1

2つの異なる郡IDに同じSTFO.ShippingZipがある場合があります。

これは、2番目のクエリでは各郡IDに追加され、最初のクエリでは1回だけ追加されるためです。

+0

はい、これは非常に大変です。 – Azazel

0

このようにそれを試してみてください。

SELECT CountyName, CountyID, 
(
    SELECT COUNT(DISTINCT(STFO.ShippingZip)) 
    FROM Orders STFO, SwedishZipCodes07 
    WHERE STFO.intShippingCountryID = 202 
    AND STFO.ShippingZip > 0 
    AND STFO.ShippingZip = SwedishZipCodes07.ZipCode 
    AND SwedishZipCodes07.CountyId = ZipWrapper.CountyID 

) AS Count 
FROM Zipcodes ZipWrapper 
ORDER BY ZipWrapper.CountyID 
+0

同じ郵便番号を持つすべてのメンバーは1つに数えられるため、これは機能しません。私の例の合計数は1419になりました(正確な数の約半分)。 – Azazel

関連する問題