2014-10-18 60 views
0

我有一个表 - friends它有2列,都是usersid的。MySQL在查询的1个结果行中选择更多的数据

我有一个表 - users其中有idusername

我需要一个查询,将从朋友表中返回username1,username2而不是id的。

我试过连接两个表,但它返回2个结果行而不是一个,这不是我想要的。

我试图调查多选择查询,但我没有发现任何特别有用的东西,是否有可能这样做?

+1

请更清楚地显示你的表的结构,我们无法理解你的架构和你想 – 2014-10-18 17:18:02

+0

你的意思产生的用户名是什么ID结束?它不清楚。 – 2014-10-18 17:20:26

+0

表:用户; int:id,text:username; 表格:朋友; int:id,int:id; – Mikiku 2014-10-18 17:20:52

回答

1

左加入users表两次,一次为每个用户:

SELECT 
    u1.username username1, 
    u2.username username2 
FROM friends f 
LEFT JOIN users u1 
    ON f.first_id = u1.id 
LEFT JOIN users u2 
    ON f.second_id = u2.id 

first_idsecond_id在你friends表中的ID列。

SQL Fiddle

+0

非常感谢,这是非常有用的知道。 – Mikiku 2014-10-18 17:26:10

+0

很高兴有帮助。 – George 2014-10-18 17:26:41

+0

@Mikiku如果你认为这是被接受的答案,请将其标记为这样。 – Dynelight 2014-10-18 17:29:33

0

你可以用2内做到这一点联接:

SELECT 
    User1.Name user1_name, 
    User2.Name user2_name 
FROM 
    friends 
    INNER JOIN users User1 ON friends.User1_ID = User1.ID 
    INNER JOIN users User2 ON friends.User2_ID = User2.ID 
相关问题