У меня есть запрос 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
Любая помощь будет оценена!
Дайте это попробовать. Возможно, вам придется изменить имена столбцов.
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
Других решений пока нет …