我有两个表:一个产品表和一个区域表。产品表包含产品的 ID 和地区代码,表示它们可以在哪些国家/地区销售:
PRODUCT:
PRODUCT_ID | TERRITORY_CODE
----------------------------
PROD1 | 2
PROD2 | 0
PROD3 | 1
PROD4 | 0
PROD5 | 2
PROD6 | 0
PROD7 | 2
第二个表格包含一个地区代码和允许销售的国家/地区的相应 ISO 代码。例如:
TERRITORY:
TERRITORY_CODE | COUNTRY_CODE
---------------------------
0 | US
1 | CA
2 | US
2 | CA
我想编写一个查询作为键的PRODUCT_IDs
使用次数。COUNTRY_CODE
例如,我想知道在美国有多少不同的产品在售。我不想知道,0
并且2
是包含美国的领土代码,我只想查找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
。我究竟做错了什么?