好吧,我一直坚持使用桌面设计,我现在无法改变,我需要根据用户名从friends_relationship表中获取所有朋友
我现在拥有的:
select distinct(username) from members m
inner join members_friends f on f.id_memb_friend1 = m.id
where (f.id_memb_friend1 = 173 or f.id_memb_friend2 = 173)
成员表有列:id,username member_friends表有列,id,id_memb_friend1,id_memb_friend2
我发布的查询还会返回ID为173的成员的用户名,例如是Splendid。 我想要实现的是根据我提供的用户名(Splendid = id 173)将所有朋友与用户名一起使用。
更新
我希望得到这个:
输入:username = Splendid 行动:获得精彩朋友的用户名(连同他们的ID) 输出:
members.id = 5 username = John
members.id = 15 username = Lara
members.id = 66 username = Alex
依旧......
答案 0 :(得分:0)
(已更新以适应评论中表达的新要求。) (更新以适应更新问题中表达的新要求。)
您的问题是否与您是否要根据用户名或用户ID进行搜索不一致。虽然您的查询使用id,但我根据澄清的要求使用用户名。我还假设您想要朋友'用户名(仅限)。此外,从您的初始查询中可以看出,您希望查看两个方向的关系(在friend1上匹配,在all2上显示所有friend2,在friend2上匹配,显示所有friend1)。
这是实现所有目标的一种方法:
select mm.id, mm.username
from members mm
inner join member_friends f on f.id_memb_friend1 = mm.id
inner join members m on m.id = f.id_memb_friend2
where m.username = 'Splendid'
union distinct
select mm.id, mm.username
from members mm
inner join member_friends f on f.id_memb_friend2 = mm.id
inner join members m on m.id = f.id_memb_friend1
where m.username = 'Splendid'
答案 1 :(得分:0)
SELECT CASE f.id_memb_friend1 WHEN'173'THEN f.id_memb_friend2 ELSE f.id_memb_friend1 END AS MemberID
,m。username
FROM members_friends f内部联接成员m f.id_memb_friend1 = m.id或者f.id_memb_friend2 = m.id
where(f.id_memb_friend1 = 173或f.id_memb_friend2 = 173)