2014-01-13 1 views
2

Я использую MySQL,запросов, которые отображают отец, сын в одной колонке

В моей базе данных, у меня есть эта таблица:

+-----------------------------+ 
| ID NAME  ID_FATHER | 
+-----------------------------+ 
| 1  Mylodi  0   | 
| 2  Jack  0   | 
| 3  Linda  1   | 
| 4  Mark  2   | 
| 5  Simon  4   | 
| 6  Sacha  1   | 
| 7  Edward  1   | 
+-----------------------------+ 

По этому запросу я получить каждое имя его отец:

select f.name as father, s.name as son from family s, family f where s.id_father = f.id 

Результат

+------------+---------+ 
| father  | son  | 
+------------+---------+ 
| mylodi  | linda | 
| Jack  | mark | 
| mark  | simon | 
| mylodi  | sacha | 
| mylodi  | edward | 
+------------+---------+ 

Но, на мой вопрос Как я могу получить этот результат, но в одном столбце, как это:

+--------+ 
| colum | 
+--------+ 
| Mylodi | 
| linda | 
| sacha | 
| edward | 
| jack | 
| mark | 
| simon | 
+--------+ 

, что означает, что я хочу, чтобы отобразить имя Отца и под каждым именем имен отца его сын. Благодарю.

EDIT это мой дб structure

+2

Что вы пробовали? Это довольно простой случай использования предложения ORDER BY в запросе. –

+0

с «Союзом», если вы разместите свою структуру db в http://sqlfiddle.com/, мы можем помочь вам лучше – jcho360

+0

@ jcho360: Хорошо :) – 2dar

ответ

0

Это не так просто. Предполагается, что в данных нет петель (a является отцом b, а b является отцом)

Не знаете, какую базу данных вы используете, но у Oracle есть иерархические запросы, предназначенные для таких проблем, как «connect by "ключевое слово.

+0

для меня я использую MySQL – 2dar

+0

Я лично этого не делал, но есть ряд сообщений по Иерархическим запросам в MYSQL, которые вы можете искать. – user3191637

2

Как о чем-то вроде этого:

SELECT name FROM (
    SELECT id, name, id sort1, id_father sort2 FROM family WHERE id_father = 0 
    UNION 
    SELECT id, name, id_father, 1 sort2 FROM family WHERE id_father <> 0 
) AS v 
ORDER BY sort1, sort2 

Вот обновленный fiddle.

Смежные вопросы