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