【发布时间】:2019-10-08 23:23:35
【问题描述】:
我有以下 Mysql 数据库架构:
User(Id, FirstName, LastName, NickName, Etc.)
Request(SenderId, ReceiverId)
Friendship(Id1, Id2)
我认为友谊是一种无向关系,这意味着对于每一个友谊,我都会将它两次插入到 Friendship 表中。 (如果这不是一个好主意,请告诉我)。
我要检索的是一个用户列表,这些用户不是特定用户的朋友(让我将他命名为 UserX),也没有当前请求来自/来自他。
我最初的试验导致我这样做:
SELECT User.Id, User.NickName, User.Picture FROM User
LEFT JOIN Friendship A ON User.Id = A.Id1
LEFT JOIN Friendship B ON User.Id = B.Id2
LEFT JOIN Request C ON User.Id = C.Sender
LEFT JOIN Request D ON User.Id = D.Reciever
WHERE User.Id <> ?
当然,占位符是 UserX 的 ID。
这不起作用,因为虽然消除了与 UserX 有友谊或请求的元组,但朋友仍然出现,因为他们与其他用户有友谊!
提前致谢。
【问题讨论】:
-
提供样本数据和期望的结果。
标签: mysql sql social-network-friendship