简体   繁体   English

从两个表中提取数据

[英]pull data from two tables

I need to pull data from two tables, and it's a bit over my head : 我需要从两个表中提取数据,这有点超出我的想法:

The first tables contains a list of members (member_id, username, email ...) The second table stores relations between members (id, member_id, friend_id) 第一个表包含成员列表(member_id,username,email ...)第二个表存储成员之间的关系(id,member_id,friend_id)

When a member adds another member as a friend, both member_ids are stored in the second table. 当成员将另一个成员添加为朋友时,两个member_id都存储在第二个表中。

Now I need to output that second table, I'd like to output usernames instead of numbers : 现在我需要输出第二个表,我想输出用户名而不是数字:

example : 例如:

{username corresponding to member_id} added {username corresponding to friend_id} as a friend {username_id}对应的{username}{username对应于friend_id}添加为朋友

Can someone help with the query ? 有人可以帮助查询吗?

You need to perform a double join on members 您需要对成员执行双连接

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

Check the accepted answer on this question: How do you join on the same table, twice, in mysql? 检查这个问题的接受答案: 你如何在mysql中加入同一个表,两次?

You'll just have to join the second table twice. 你只需要两次加入第二张桌子。

Something like: 就像是:

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
)

This is how I would do it: 我就是这样做的:

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

I've spaced it so that you can easily see how we're joining the members table twice, and simple giving it a different name both times. 我把它隔开,这样你就可以很容易地看到我们如何加入成员表两次,并简单地给它一个不同的名字。

Whenever something is followed by AS, it means that you're giving it another name. 每当AS跟随某些事情时,就意味着你给它起了另一个名字。 This allows you to use the same table multiple times in a single query. 这允许您在单个查询中多次使用同一个表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM