У меня есть 1 стол:SQL Left ПРИСОЕДИНЕНИЯ 3 Таблицы
Contacts (ID integer, Name text, ATT_ID integer)
Моя таблица заполнена этими значениями:
(1, 'Alice', 1)
(2, 'Bob', 1)
(3, 'Carol', 1)
(4, 'Dave', 4)
(5, 'Eve', 4)
(6, 'Frank', 6)
Цель состоит в том, чтобы присоединиться к этим Контакты ID с сопряженным ATT_ID.
Это мой текущий SQL-код:
SELECT t1.ID as ID, t1.Name , tt.Name , tt2.Name
FROM Contacts as t1
LEFT JOIN (
SELECT MIN(t2.ID), t2.Name, t2.ATT_ID FROM Contacts as t2
WHERE t2.ID <> t2.ATT_ID)
AS tt ON t1.ID = tt.ATT_ID
LEFT JOIN (
SELECT MAX(t3.ID), t3.Name, t3.ATT_ID FROM Contacts as t3
WHERE t3.ID <> t3.ATT_ID)
AS tt2 ON t1.ID = tt2.ATT_ID
WHERE t1.ID = t1.ATT_ID;
и мой результат:
Alice | Bob | null
Dave | null | Eve
Frank | null | null
Но желаемый результат должен выглядеть следующим образом:
Alice | Bob | Carol
Dave | Eve | null
Frank | null | null
Как я могу выполнить это?
Какие СУБД? MySQL, SQL Server Oracle Other? – xQbert
RDBMS: SQL Oracle –