有两个表:Category
和CatID | CatName
。
| | CatID | CategoryName |
|---|-------|--------------------|
| 1 | 1021 | Home |
| 2 | 1022 | Corporate |
| 3 | 1023 | Products |
| 4 | 1024 | Gardens |
| 5 | 1025 | Investor Relations |
| 6 | 1026 | News & Events |
| 7 | 1027 | Contact Us |
和SubCategory
和SubID | CatID
| | SubID | CatID |
|----|-------|-------|
| 1 | 9 | 1025 |
| 2 | 5 | 1022 |
| 3 | 6 | 1022 |
| 4 | 10 | 1025 |
| 5 | 11 | 1025 |
| 6 | 12 | 1025 |
| 7 | 13 | 1025 |
| 8 | 14 | 1025 |
| 9 | 15 | 1025 |
| 10 | 16 | 1026 |
| 11 | 17 | 1026 |
| 12 | 7 | 1022 |
| 13 | 8 | 1022 |
| 14 | 18 | 1023 |
我想得到一个视图,其中将有两列View
和CatID | Flag
,其中0
(如果没有该列的子类别,则为CatId
,否则为{{1}) }。
答案 0 :(得分:2)
我会计算子类别并在其上进行左连接:
CREATE VIEW my_view AS
SELECT c.CatId, CASE WHEN cnt IS NOT NULL THEN 1 ELSE 0 END AS Flag
FROM Categoery c
LEFT JOIN (SELECT CatId, COUNT(*) AS cnt
FROM SubCategory
GROUP BY CatId) s ON c.CatId = s.CatId