我有一个SQL查询,它以{下面列出的格式返回Chat
模型中唯一用户ID组合的列表。
我当前的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
这将返回两列有效用户ID:
sender | target
1 | 2
10 | 12
3 | 4
5 | 4
我想从first_name
模型返回last_name
和User
以及sender
和target
ID。我对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
任何帮助将不胜感激!
答案 0 :(得分:0)
试一试。您可能需要更改列名称。
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