#sql #oracle #inner-join #self-join
#sql #Oracle #внутреннее соединение #самосоединение
Вопрос:
У меня есть таблица group
, содержащая группы с их родительской группой:
groupid name parentid
-------------------------
1 test 1
2 second 1
3 3rd 1
4 next 2
Как я могу запросить эту таблицу, чтобы получить такой результат (имя вместо идентификатора)
groupid name parent
---------------------------
1 test test
2 second test
3 3rd test
4 next second
Ответ №1:
Это самосоединение:
select t.groupid, t.name, p.name parentname
from mytable t
inner join mytable p on p.groupid = t.parentid
Если у вас отсутствует parentid
s, вместо этого используйте a left join
.
Комментарии:
1. @ChristianTimm: знаете ли вы, что принятый вами ответ в точности совпадает с моим и был опубликован 10 минут спустя?
Ответ №2:
Вы можете использовать следующий запрос:
select A.groupid, A.name, B.name as parentid
from group A
left join group B on A.groupid = B.parentid
Комментарии:
1. Спасибо! Это работает нормально, и теперь я могу реализовать это для большего запроса. Позиция в порядке? [
code
]выберите PPOM_USER.PUSER_ID, PPOM_USER.PUSER_NAME, PPOM_GROUP. PNAME, p.PNAME из PPOM_GROUP полное внешнее соединение (PPOM_USER полное внешнее соединение PPOM_MEMBER на PPOM_USER. PUID = PPOM_MEMBER.RUSERU ) в PPOM_GROUP. PUID = PPOM_MEMBER.RGROUPU слева присоединяется к PPOM_GROUP p на p.PUID = PPOM_GROUP. RPARENTU[/code
]