帮助处理用户关系
Posted
技术标签:
【中文标题】帮助处理用户关系【英文标题】: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?如果那样的话。
【问题讨论】:
【参考方案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 语句把我搞糊涂了 我可以引导你到我的这个帖子***.com/questions/5524627/help-with-sql-select-syntax也许你能帮忙吗? 好的,稍等片刻。您知道 INNER JOIN 是什么意思,还是因为用户两次加入而造成的混淆?以上是关于帮助处理用户关系的主要内容,如果未能解决你的问题,请参考以下文章