使用父列时如何找到匹配值?
How to find matching values when working with parent column?
我有以下表格:
文章:
article_id category_id
1 10-1
2 20-1
3 NULL
类别:
category_id category_name parent_id
10-1 A 00-00
20-1 B 10-1
每篇文章都与一个类别相关联。类别最多可以有 2 个嵌套级别(例如类别和子类别)。 category_id 将是最深的嵌套
我想将其转换为:
article_id category_id category_name subcategory_name
1 10-1 A NULL
2 20-1 A B
3 NULL NULL NULL
我正在使用 PrestoSQL,但我认为这可以通过本机解决 sql。
使用 ANSI SQL:
select
art.article_id,
art.category_id,
coalesce(pcat.category_name, cat.category_name) category_name,
case
when pcat.category_id is null then null
else cat.category_name
end subcategory_name
from articles art
left join categories cat
on art.category_id=cat.category_id
left join categories pcat
on cat.parent_id=pcat.category_id
order by article_id
我有以下表格:
文章:
article_id category_id
1 10-1
2 20-1
3 NULL
类别:
category_id category_name parent_id
10-1 A 00-00
20-1 B 10-1
每篇文章都与一个类别相关联。类别最多可以有 2 个嵌套级别(例如类别和子类别)。 category_id 将是最深的嵌套
我想将其转换为:
article_id category_id category_name subcategory_name
1 10-1 A NULL
2 20-1 A B
3 NULL NULL NULL
我正在使用 PrestoSQL,但我认为这可以通过本机解决 sql。
使用 ANSI SQL:
select
art.article_id,
art.category_id,
coalesce(pcat.category_name, cat.category_name) category_name,
case
when pcat.category_id is null then null
else cat.category_name
end subcategory_name
from articles art
left join categories cat
on art.category_id=cat.category_id
left join categories pcat
on cat.parent_id=pcat.category_id
order by article_id