我有两张桌子:
users : contains id and name
friends : contains id1 and id2
假设我在users
表中有这些数据:
id : 1 , name : FinalDestiny
id : 2 , name : George
这个数据在friends
表中:
id1: 1 , id2: 2
所以这意味着1是2的朋友。
我需要一个查询来说id1
是id2
的朋友(但我需要名字)喜欢:FinalDestiny是乔治的朋友。我必须创建一个mysql内部或左边的连接,但我不知道如何
答案 0 :(得分:2)
Select F1.Name,
F2.Name
From Friends F
INNER JOIN USER F1 ON F.ID1 = F1.id
INNER JOIN USER F2 ON F.ID2 = F2.id
说明:
由于朋友是两个用户,friend1和friend2的组合,所以我们将尝试加入2个用户的朋友,1个与ID1对应的用户表和其他ID2从各个用户表中获取两个朋友的信息。
答案 1 :(得分:1)
我不知道你是否能做到。但这是我能为你找到的最接近的。
select u1.name, u2.name from users u1, users u2, friends f where u1.id = f.id1 and u2.id = f.id2
答案 2 :(得分:1)
使用别名并将用户表与friend表重复加入:
SELECT `u1`.`name` `name1`, `u2`.`name` `name2`
FROM `friends` `f`
INNER JOIN `users` `u1`
ON `f`.`id1` = `u1`.`id`
INNER JOIN `users` `u2`
ON `f`.`id2` = `u2`.`id`
答案 3 :(得分:1)
您需要两次加入users
表。
SELECT
u1.name AS FirstPerson
,u2.name AS SecondPerson
FROM
friends f
INNER JOIN
users u1
ON
u1.id = f.id1
INNER JOIN
users u2
ON
f.id2 = u2.id
答案 4 :(得分:1)
你应该能够在没有明确使用连接的情况下查询这个...
SELECT * FROM (friends, users AS u1, users AS u2) WHERE
friends.id1=u1.id AND friends.id2=u2.id
答案 5 :(得分:1)
您需要从朋友中选择并加入用户表两次(对于每个朋友)
SELECT u1.Name, u2.Name
FROM Friends as fr
INNER JOIN users as u1 on fr.Id1 = u1.id
INNER JOIN users as u2 on fr.Id2 = u2.id