我正在努力在mysql中编写查询连接
我有两张桌子
挑战
challenge_ID(int) |to_user(int)|from_user(int)|timestamp|gameID=>nullable
用户
iduser(int)|first_name(string)
当我有challengeID
时,我想获得to_user和form_user的名字例如
挑战
challenge_ID(int) |to_user(int)|from_user(int)|timestamp|gameID
1 9 10 sometimestamp
用户
iduser(int)|first_name(string)
9 Tom
10 Chris
11 Patrick
我想让'Tom'和'Chris'获得挑战ID 1
感谢您的帮助。
答案 0 :(得分:1)
可能是这样的:
SELECT first_name
FROM Users
WHERE iduser IN (SELECT to_user
FROM challenges
WHERE Challenge_Id = 1
UNION
SELECT from_user
FROM challenges
WHERE Challenge_Id = 1)
答案 1 :(得分:0)
这就是你这样做的方式
select c.* ,u.first_name as to_name , u2.first_name as from_name
FROM challenges c
join users u on c.to_user = u.id
join users u2 on c.from_user = u2.id
where c.challenge_ID = 1
答案 2 :(得分:0)
看起来你需要一个UNION然后一个JOIN:
SELECT users.first_name
FROM (
SELECT from_user AS usr FROM challenges WHERE challenge_id=1
UNION
SELECT to_user FROM challenges WHERE challenge_id=1
) u INNER JOIN users ON u.usr = users.id_user
UNION将删除子查询上的重复项,如果没有重复项,则可以使用更快的UNION ALL。
答案 3 :(得分:0)
您可以尝试此查询
SELECT u_to.first_name, u_from.first_name
FROM challenges c
INNER JOIN users u_to ON u_to.iduser = c.to_user
INNER JOIN users u_from ON u_from.iduser = c.from_user
WHERE c.challange_ID = 1