【问题标题】:help with relationship of users帮助处理用户关系
【发布时间】:2011-07-28 07:21:56
【问题描述】:

大家又被我的表上的 sql 布局困住了,我似乎无法理解如何做到这一点。

我需要用户能够与其他用户成为朋友(用户保存在用户表中)我试图创建一个“朋友”表,以便他们可以相互关联。

我需要与FriendID一起存储的UserID,UserID是当前用户的,FriendID与朋友的UserID相关。啊啊啊好混乱。

即使再次谈论它,我也会迷路,基本上就像我编写代码的方式一样,我需要 FriendID 与用户表的 UserID 相关联,这样我就可以找到我之后的人,这样我就可以在当前显示凭据“ UserID”页面,但我还需要一些方法来找出所有当前的 UserIDs 朋友

UserID 与所有当前好友相关 (FriendID) FriendID 与 User 表中的一个用户(UserID)相关

到目前为止,我只有这个。如何将 FriendID 引用回 UserID?如果那样的话。

【问题讨论】:

    标签: c# asp.net mysql sql html


    【解决方案1】:

    这实际上是 UserA(初始用户)和 UserB(目标用户)之间的多对多关系,您需要一个 IsFriendsWith 表来关联两者,例如

    User
    -------------
    UserID [PK]
    Name
    etc,
    
    IsFriendsWith
    -------------
    InitiatingUserID [FK]
    TargetUserID [FK]
    

    因此,您可以使用它来查找(对于任何发起用户)他们的朋友,以及任何与他们交朋友的目标用户。

    编辑 - 我是 SQL Server 用户,但以下查询(或类似的查询)应该在 mysql 中工作,以便列出 ID 在参数 @UserID 中定义的用户的所有朋友

    SELECT u2.Name FROM Users u1
        INNER JOIN IsFriendsWith ifw ON u1.UserID = ifw.InitiatingUserID
        INNER JOIN Users u2 ON u2.UserID = ifw.TargetUserID
        WHERE u1.UserID = @UserID
    

    【讨论】:

    • 我认为这行不通,比如 1(发起)是 2(目标)的朋友,如何在发起人员页面上显示目标 2 的详细信息?什么是 sq 命令呢?
    • 我不是 mysql 用户,所以我的示例 SQL 可能无法按原样工作,但希望为您指明正确的方向。请参阅编辑后的答案。
    • 用那个 sql 语句把我搞糊涂了
    • 我可以引导你到我的这个帖子stackoverflow.com/questions/5524627/help-with-sql-select-syntax也许你能帮忙吗?
    • 好的,稍等片刻。您知道 INNER JOIN 是什么意思,还是因为用户两次加入而造成的混淆?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多