一张桌子上有许多外键

时间:2019-12-18 07:36:05

标签: mysql sql

我也不知道该如何搜索它,所以我决定在这里询问。我的MySQL数据库中有两个表:

表格:users

 user_id | user_name | user_surname 
---------+-----------+-------------
 111     | Tom       | Hanks
 112     | Martin    | Dubravka     
 113     | Gary      | Muller
 114     | Grzegorz  | Kowalewski
 115     | Chris     | Anderson
 116     | John      | Smith

表格:best_users

 id    | best_user_1 | best_user_2 | best_user_3 | best_user_4 | best_user_5 | best_user_6          
-------+-------------+-------------+-------------+-------------+-------------+-------------
 1     |  115        |  114        |  112        |  116        |  111        |  113        

best_user_id字段是user_id表中字段users的外键。

我想要实现的是获得(在一个查询中最好):

 id    | best_user_1  | user_name1 | user_surname1 | best_user_2 | user_name2 | user_surname2 | best_user_3 | ...
-------+--------------+------------+---------------+-------------+------------+---------------+-------------+----
 1     |  115         | Chris      | Anderson      | 114         |  Grzegorz  | Kowalewski    | 112         | ...

在纯SQL中的一个查询中是否可能?当然,我可以首先获得best_users,然后根据user_name字段获得best_user_x。应该通过某种JOIN完成吗?

致谢

M

1 个答案:

答案 0 :(得分:2)

我希望您喜欢输入...,您需要JOIN 6次到users表中,每个best_user一次:

SELECT id,
       best_user_1,
       u1.user_name AS user_name1,
       u1.user_surname AS user_surname1,
       ...
       best_user_6,
       u6.user_name AS user_name6,
       u6.user_surname AS user_surname6
FROM best_users
JOIN users u1 ON u1.user_id = best_users.best_user_1
...
JOIN users u6 ON u6.user_id = best_users.best_user_6

Demo on dbfiddle

相关问题