我有将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'
任何建议?
答案 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')