获取包含相同表格中信息的朋友列表

时间:2017-08-29 05:55:30

标签: php mysql sql join left-join

我有将user email存储在表格user_info中的情况。其结构如下:

user_info(_id,email)

然而,一个用户可以是其他用户的朋友。因此,我有另一个表user_friend。其结构如下:

user_friend(_id,userA , userB)

现在假设有5个用户A,B,C,D和E.我们得到的表格值是这样的。

  

USER_INFO

_id      email  
 1       A@...      
 2       B@...       
 3       C@...       
 4       D@...
 5       E@...       
  

user_friends

_id   userA   userB
 1       1       2
 2       1       3
 3       1       4
 4       5       1

它的意思是A是B,C,D和E的朋友。我想收到这些的电子邮件,但我无法考虑任何正确的查询。 我正在使用左连接,但它似乎无法正常工作

  

获得1的朋友(A @ ...)。但它没有正常工作

SELECT DISTINCT email FROM user_info AS UI 
LEFT JOIN user_friends AS UF
ON UI._id = UF.userA 
LEFT JOIN user_friends AS UF2 
ON UI._id = UF2.userB
WHERE UF2.userA = '1' || UF2.userB ='1'

任何建议?

2 个答案:

答案 0 :(得分:0)

使用UNION向所有朋友发送电子邮件

(SELECT
  u2.email
FROM user_info u
LEFT JOIN user_friends f ON f.userA = u._id
LEFT JOIN user_info u2 on u2._id = f.userB
WHERE u._id = 1)
UNION
(SELECT
    u2.email
FROM user_info u
LEFT JOIN user_friends f ON f.userB = u._id
LEFT JOIN user_info u2 ON u2._id = f.userA
WHERE u._id = 1)

答案 1 :(得分:0)

这将是这样的事情。

  

从user_info中选择电子邮件WHERE _id IN(从user_friends中选择userA,其中userB ='1'Union所有从user_friends中选择userB,其中userA ='1')