0
我有两个表:产品表和地域表。产品表中持有哪些国家,他们可以在出售的产品和地域代码表示的ID:Oracle WITH子句和按结果分组
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
我想编写计数使用COUNTRY_CODE
为关键字的PRODUCT_IDs
数量的查询。
例如,我想知道在美国有多少种不同的产品可供销售。我不想知道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
获得它。我究竟做错了什么?
它看起来像你的例子中的SQL可能不完整。 “TERRITORY_ID”似乎不在“国家/地区”。 – woemler
您是否只有'product_id'的唯一实例,还是只有每个''territory_code''唯一?答案会有所不同。 –
产品ID是唯一的。对于许多产品ID,“territory_code”可以相同。在领土方面,一个territory_code有许多country_codes,而country_code可能属于许多territory_codes。 – michaelmichael