【问题标题】:Get posts from friends (that you have permission to see)从朋友那里获取帖子(您有权查看)
【发布时间】:2014-02-03 05:50:46
【问题描述】:

我想获取用户朋友的所有帖子,但只获取他有权查看的帖子。我的数据库中有以下表格(仅包含相关属性):

用户:

userid

发帖

postid    authorid

友谊

friendshipid    userid    friendid

权限

postid    userid

每个好友在表好友中有2条记录(如果用户1和2是好友,则表中会添加1 2 和2 1 )。每个帖子在Permission表中都有多条记录,该表中的userid表示有权限查看帖子的用户(不代表该用户就是帖子的作者)。该用户必须是帖子作者的朋友。

让我的结果具有良好性能的最佳查询是什么?如果我将 authorid 添加到表 Permission 中,我还能获得更好的性能吗?

【问题讨论】:

    标签: sql database performance join


    【解决方案1】:

    获取@UserId 的朋友是作者以及@UserId 有权查看该帖子的所有帖子:

    SELECT postid
    FROM Post
    INNER JOIN Friendship ON Friendship.userid = @UserId AND Post.authorid = Friendship.friendid
    INNER JOIN Permission ON Post.postid = Permission.postid AND Permission.userid = @UserId
    

    请注意,性能取决于查询之外的内容,例如索引,但这应该是一个有效的查询。

    【讨论】:

    • 像魅力一样工作。非常感谢。
    • 你的查询有问题如果只有一个人是朋友的条目让我们说 1 和 2 或 2 和 1 你会怎么做?你能帮忙吗??
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多