mysql, присоединиться к одному столу? - PullRequest
2 голосов
/ 07 марта 2011

У меня есть таблица, которая выглядит как

id, parentId, name
1, null, first
2, null, second
3, 1, child of first

Я хочу сделать запрос, чтобы я мог закончить строками, которые выглядят как

1, ноль, первый
2, ноль, второй
3, во-первых, потомок первого

так что в основном что-то вроде

SELECT id, (SELECT name FROM pages WHERE id=parentId), name FROM pages

конечно, очевидно, что запрос ужасен.

Ответы [ 2 ]

2 голосов
/ 07 марта 2011

Вы можете попробовать что-то вроде следующего, оно ограничено двумя уровнями: родительский и дочерний. Это не будет работать для 3 или более уровней, например. Родители-> ляющих> Ребенка

SELECT  Parent.ID,
        Child.name,
        Parent.Name
FRom    yourTable as Parent LEFT JOIN 
        yourTable as Child On Parent.ParentID = Child.ID
1 голос
/ 07 марта 2011

Попробуйте:

select id, parent = null, name from pages where parentid is null

union all

select id, parent = top.name, name = sub.name
from pages sub
     join pages top on sub.parentid = top.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...