0

製品テーブルと地域テーブルの 2 つのテーブルがあります。製品テーブルには、製品の ID と、製品を販売できる国を示す地域コードが保持されます。

PRODUCT:

PRODUCT_ID  | TERRITORY_CODE
----------------------------
   PROD1    |       2
   PROD2    |       0
   PROD3    |       1
   PROD4    |       0
   PROD5    |       2
   PROD6    |       0
   PROD7    |       2

2 番目のテーブル テーブルには、地域コードと、販売が許可されている国の対応する ISO コードが保持されます。次に例を示します。

TERRITORY:

TERRITORY_CODE | COUNTRY_CODE
---------------------------
      0        |     US
      1        |     CA
      2        |     US
      2        |     CA

PRODUCT_IDs使用回数をCOUNTRY_CODEキーにカウントするクエリを書きたいと思います。

たとえば、米国で販売されている個別の製品の数を知りたいとします。私はそれを知る必要はありません.02は米国を含む地域コードです. で検索したいだけですCOUNTRY_CODE. これどうやってするの?

いくつかの予備調査で、WITH句が役立つ可能性があることがわかり、次のクエリを思いつきました。

WITH country AS (
  SELECT (DISTINCT COUNTRY_CODE)
  FROM TERRITORY
) 
SELECT COUNT(DISTINCT PRODUCT_ID) 
FROM country c,
PRODUCT p
WHERE p.TERRITORY_CODE=c.TERRITORY_ID;

ただし、これでは期待した結果が得られません。でグループ化することもできませんCOUNTRY_CODE。私は何を間違っていますか?

4

1 に答える 1

4

を使用する必要があるようですGROUP BY。次のようなことを試してください:

SELECT T.Country_Code, COUNT(DISTINCT PRODUCT_ID) 
FROM Product P
JOIN Territory T ON P.Territory_Code = T.Territory_Code
GROUP BY T.Country_Code

そしてSQLフィドル

幸運を。

于 2013-01-24T19:52:33.373 に答える