Выберите родительское имя, используя родительский идентификатор в той же таблице - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть таблица с tag_categories, которую я объединяю с некоторыми другими таблицами, чтобы я мог получить категорию тега файла, в этой таблице у меня есть столбец parent_id, который является просто еще одной категорией тега из той же таблицы. При построении запроса, как показано ниже, он получает parent_id, я не знаю, как получить имя родителя:

Запрос:

select 
    tags.id, 
    tags.name,
    tag_categories.name,
    tag_categories.parent_id,
    count(files.id) 
from 
    "files" 
    inner join "file_tags_join" on "files"."public_id" = "file_tags_join"."file_public_id" 
    inner join "tags" on "file_tags_join"."tag_id" = "tags"."id" 
    inner join "tag_categories" on "tags"."category_id" = "tag_categories"."id" 
where 
    "tags"."category_id" is not null 
group by 
    tags.id, 
    tags.name,
    tag_categories.name,
    tag_categories.parent_id

То, что я ожидаю получить помимо того, что уже получаю, - это название категории, соответствующее родительскому_иде категории:

id  name    name    parent_id   count   parent_name
2   tag2    tagCategory2    1   1         tagCategory1
1   tag1    tagCategory1    (null)  1     null    

Вот скрипка sql :

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете попробовать ниже

DEMO

select 
    tags.id, 
    tags.name,
    tag_categories.name,
    tag_categories.parent_id,
    b.name as parentname,
    count(files.id) 
    from 
    "files" 
    inner join "file_tags_join" on "files"."public_id" = "file_tags_join"."file_public_id" 
    inner join "tags" on "file_tags_join"."tag_id" = "tags"."id" 
    inner join "tag_categories" on "tags"."category_id" = "tag_categories"."id" 
    left join  "tag_categories" b on tag_categories.parent_id = b.id
    where 
    "tags"."category_id" is not null 
    group by 
    tags.id, 
    tags.name,
    tag_categories.name,
    tag_categories.parent_id,b.name

ВЫВОД:

id  name    name         parent_id  parentname  count
2   tag2    tagCategory2    1       tagCategory1    1
1   tag1    tagCategory1                            1
...