我需要从两个表中提取数据,这有点过头了:
第一个表包含成员列表(member_id,username,email ...) 第二个表存储成员之间的关系(id,member_id,friend_id)
当成员将另一个成员添加为朋友时,两个member_id都存储在第二个表中。
现在我需要输出第二个表,我想输出用户名而不是数字:
示例:
{与member_id相对应的用户名} 已添加 {对应于friend_id的用户名} 作为朋友
有人可以帮助查询吗?
答案 0 :(得分:2)
您需要对成员执行双重加入
SELECT mem1.username, mem2.username
FROM members mem1
INNER JOIN relations
ON mem1.member_id = relations.member_id
INNER JOIN member mem2
ON relations.friend_id = mem2.member_id
答案 1 :(得分:0)
检查此问题的已接受答案:How do you join on the same table, twice, in mysql?
你只需要两次加入第二张表。
答案 2 :(得分:0)
类似的东西:
select tb1.username as member_name,
tb2.username as friend_name
from membertable as tb1
inner join
(
membertable as tb2,
memberrelationstable
)
on
(
tb1.member_id = memberrelationstable.member_id and
tb2.member_id = memberrelationstable.friend_id
)
答案 3 :(得分:0)
我就是这样做的:
SELECT member.username AS member_username, friend.username AS friend_username
FROM relations
INNER JOIN members AS member
ON relations.member_id = member.member_id
INNER JOIN members AS friend
ON relations.friend_id = mem2.member_id
我把它隔开,这样你就可以很容易地看到我们如何加入成员表两次,并简单地给它一个不同的名字。
每当AS跟随某些事情时,就意味着你给它起了另一个名字。这允许您在单个查询中多次使用同一个表。