从两个表中提取数据

时间:2011-11-10 11:02:24

标签: php sql

我需要从两个表中提取数据,这有点过头了:

第一个表包含成员列表(member_id,username,email ...) 第二个表存储成员之间的关系(id,member_id,friend_id)

当成员将另一个成员添加为朋友时,两个member_id都存储在第二个表中。

现在我需要输出第二个表,我想输出用户名而不是数字:

示例:

{与member_id相对应的用户名} 已添加 {对应于friend_id的用户名} 作为朋友

有人可以帮助查询吗?

4 个答案:

答案 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跟随某些事情时,就意味着你给它起了另一个名字。这允许您在单个查询中多次使用同一个表。