我不太确定如何构建一个sql join来查找特定用户“朋友”的用户。
例如我有两张表
User Table
u_ID | u_Name
-------------
1 | bob
2 | jill
3 | jack
4 | susan
Friends Table
f_ID | u_ID1 | u_ID2
--------------------
1 | 1 | 2
2 | 3 | 1
3 | 4 | 2
例如,我需要找到让所有朋友或所有jills朋友获得的方法。
朋友不能有重复的结果
即。可以有一行(u_ID1 = 1,u_ID2 = 2)或(u_ID1 = 2,u_ID = 1)但不是两者,因为它们在技术上是相同的。
这是不正确的查询
SELECT u.u_Name
FROM user u
INNER JOIN friends f ON (f.u_ID1 = '1' OR f.u_ID2 = '1')
提前致谢
解决方案
检查Kris Babic回复解决方案,
也感谢大家的帮助
答案 0 :(得分:3)
这使用了一个STRAIGHT联接,但应该有效:
select u.u_Name
from friends f, user u
where (f.u_ID1 = '1' and u.u_ID = f.u_ID2)
or (f.u_ID2 = '1' and u.u_ID = f.u_ID1)
答案 1 :(得分:1)
对于所有bob的朋友,这应该有用(未经测试)
select u.u_Name
FROM user u
inner join friends f1 on f1.u_uID1 = u.u_ID
inner join friends f2 on f2.u_uID2 = u.u_ID
where u.u_ID = 1
答案 2 :(得分:0)
试试这个:
SELECT u1.u_Name as user1 , u2.u_Name as user2
FROM user as u1 INNER JOIN friends ON u1.u_ID=friends.u_ID1
INNER JOIN user as u2 ON u2.u_ID=friends.u_ID2