Reputation: 93
I'm not sure even how to google it so I decided to ask here. I have two tables in my MySQL database:
Table: 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
and
Table: 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
field is the Foreign Key to field user_id
in users
table.
What I would like to achieve is to get (best in one query):
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 | ...
Is it possible in one query in pure SQL? Of course I could get best_users
first and then get user_name
based on best_user_x
field. Should be it done in some kind of JOIN?
Regards
M
Upvotes: 0
Views: 129
Reputation: 147286
I hope you like typing... you need to JOIN
to the users
table 6 times, once for each 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
Upvotes: 2