2015-06-03 3 views
-2

Я использую PhpMyAdmin, чтобы получить доступ к своей базе данных и у меня есть эта таблица:SQL Select дважды из одной таблицы

ID NAME SUPERVISOR CITY SALARY  
9 Lucy    NY 100000  
13 Max   9 TN 50000 
5 Peter   9 TN 60000  
70 Kid   5 HI 40000 

нужно выбрать это:

NAME SUPERVISOR 
Lucy - 
Max Lucy 
Peter Lucy 
Kid Peter 

Я попытался решить ее в течение более получаса, но ничего не помогает. Это должно быть что-то очень легкое. Вы можете помочь?

ответ

1

Вам нужно MYSQL Self Join функцию, чтобы получить результат

SELECT e1.name, IFNULL(e2.name,'--') SUPERVISORName 
FROM t e1 
    LEFT JOIN t e2 
    ON e1.SUPERVISOR = e2.ID 
Order by e1.SUPERVISOR 

NAME SUPERVISORName 
Lucy -- 
Kid  Peter 
Max  Lucy 
Peter Lucy 

SAMPLE SQL FIDDLE

2

Вы можете получить свой результат с LEFT JOIN на одной и той же таблице:

Select  T1.Name, T2.Name As Supervisor 
From  YourTable T1 
Left Join YourTable T2 On T1.Supervisor = T2.ID 
1

Это должно сделать это - в себя Соединения:

SELECT t1.Name, t2.Name AS Supervisor 
FROM myTable t1 
LEFT JOIN myTable t2 ON t1.Supervisor = t2.Id 

Если вы действительно хотите, чтобы показать тир, -, вместо null вы можете использовать:

COALESCE(t2.Name,'-') AS Supervisor 
0

Вы можете сделать присоединиться к одной и той же таблице.

SELECT person.NAME AS NAME, sv.NAME AS SUPERVISOR FROM person LEFT JOIN person AS sv ON person.SUPERVISOR = sv.ID 
+0

Да, спасибо. – Philipp

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