如何基于两列在SQL中的一个表上创建两个JOIN?

时间:2017-11-02 16:42:36

标签: php mysql sql

我有一个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_nameUser以及sendertarget 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

任何帮助将不胜感激!

1 个答案:

答案 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