Как сделать два соединения на одной таблице в SQL на основе двух столбцов?

У меня есть запрос SQL, который возвращает список уникальных комбинаций идентификаторов пользователей из Chat Модель в формате, указанном ниже.

Мой текущий запрос SQL:

SELECT DISTINCT
if(to_user_id > from_user_id, to_user_id, from_user_id) as sender,
if(to_user_id > from_user_id, from_user_id, to_user_id ) as target
FROM chats AS pair

Это возвращает два столбца действительных идентификаторов пользователя:

sender | target
1      | 2
10     | 12
3      | 4
5      | 4

Я хотел бы вернуться first_name а также last_name от User модель вместе с sender а также target Идентификаторы. Я не очень хорошо знаком с SQL, поэтому некоторое время ломал голову над этим.

То, что я надеюсь вернуть, это что-то вроде:

sender | first_name | last_name | target | first_name | last_name |
1      | Tom        | Jones     | 2      | John       | Smith
10     | Chris      | Comb      | 12     | Sam        | Sloth
3      | Harry      | Houdini   | 4      | Jo         | Jones
5      | Will       | Wilson    | 4      | Jo         | Jones

Любая помощь будет оценена!

-1

Решение

Дайте это попробовать. Возможно, вам придется изменить имена столбцов.

Select O.Sender, S.First_Name, S.Last_Name, O.Target, T.First_Name, T.LastName
From (
SELECT DISTINCT
if(to_user_id > from_user_id, to_user_id, from_user_id) as sender,
if(to_user_id > from_user_id, from_user_id, to_user_id ) as target
FROM chats AS pair
) O
LEFT JOIN Users S ON O.Sender = S.UserID
LEFT JOIN Users T ON O.Target = T.UserID
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector