加入两个表查询

时间:2016-09-04 08:03:42

标签: mysql

我有两个表用户和链接。我正在创建一个用户与另一个用户之间的链接。意味着用户A将链接到用户B,反之亦然。

现在我想获取特定输入的user_id的链接用户的详细信息。意味着如果用户A正在查找其链接的ID,则应该看到链接ID的详细信息。

Linkage有三列,分别是id,user_id和linked_contact_id。 用户具有user_id,user_name,pass等列。

我尝试了一次加入,但我只是从这里得到了链接ID,而不是id的详细信息。

SELECT * FROM Users INNER JOIN linkage ON linkage.user_id = Users.user_id WHERE linkage.linked_contact_id = 1

输出

user_id  linked_contact_id
1              4 
1              1
1              5

我怎么能得到这个?请帮助......谢谢......

3 个答案:

答案 0 :(得分:0)

您需要再次加入users表:

SELECT u.*, u2.* FROM Users u
INNER JOIN linkage l ON l.user_id = u.user_id
INNER JOIN Users u2 ON l.linked_contact_id = u2.user_id
WHERE l.linked_contact_id = 1

请注意,当您选择相同的列两次(在u.*, u2.*中)时,您可能必须列出每个字段并使用别名来区分它们。

答案 1 :(得分:0)

获取用户信息

SELECT users.*,
           linkage.*,
           contact.user_id as contact_user_id, 
           contact.user_name AS contact_user_name 
FROM users 
INNER JOIN linkage ON linkage.user_id = users.user_id 
INNER JOIN users AS contact ON linkage.linked_contact_id = contact.user_id 
WHERE linkage.linked_contact_id = 1

enter image description here

修改

此处查询输出的屏幕截图

enter image description here

答案 2 :(得分:0)

你的比例有问题。但没关系。

尝试LEFT JOIN或RIGHT JOIN

SELECT * users
LEFT JOIN linkage

ON linkage.user_id = users.user_id

WHERE linkage.linked_contact_id = 1