gpt4 book ai didi

mysql - 连接循环关系(初学者)

转载 作者:行者123 更新时间:2023-11-29 08:51:59 24 4
gpt4 key购买 nike

我是查询的初学者,我正在努力解决其中一个问题。这是涉及的两个表:

UserAndAddFriends

asktobefriends 表允许用户在我正在开发的应用程序中添加 friend 。其关系形式为:

AskToBeFriends(ID(长),#UserAsker(长),#UserAsked(长),Accept(tinyInt))

因此,通过这张表,我们可以看到谁请求加为好友以及是否被接受......

我试图实现的查询将允许从用户的 ID 中列出所有 friend ,并返回好友状态(接受字段 ==> 等待答案,接受或拒绝)。

Speretaly,它会是这样的:

SELECT Accept, UserAsker, UserAsked
FROM askstobefriends
WHERE UserAsker = '".$userID."' OR UserAsked = '".$userID."' ";

==> 第一个问题:它可以是要求与某人成为 friend 的用户,也可以是相反的用户,这就是为什么我把 和 OR 放在一起。之后,我希望为每一位建立的 friend 提供以下信息:

SELECT colUserID, colUserLogin, colUserName, colUserFirstname
FROM userTable
WHERE colUserID == FRIEND

所以我想我需要做一个连接查询,并且在我的连接中我必须确保我在每种情况下使用asktobefriends表中正确的外键! (一次 key 可以是 UserAsked,另一次可以是 UserAsker,具体取决于谁要求成为 friend :S)

请问有人有线索吗??谢谢 ;-) !!

最佳答案

你的设计是错误的。一个用户请求成为另一个用户的 friend ,所以“Ask_to_be_friend”是关系,基数是多对多,所以设计如下:

User_User_ID 是 UserAsker。

User_USer_ID1 是 UserAskedtobefriend

enter image description here

查询可能类似于(您将获得 user_user_ID 要求成为好友的所有用户):

Select U.* from User as U
Join Ask_to_be_friend as A on
U.user_ID = A.User_user_ID
--where a.accept=1 if you add this, this will give
--you all the friends ID of the user_ID table User

如果您想获取被邀请好友的姓名或额外信息,您需要额外加入

Select U.* from User as U
Join Ask_to_be_friend as A on
U.user_ID = A.User_user_ID
Join User as U2 on
A.User_User_ID1=u2.User_ID
--where a.accept=1 ,with this you'll with get only the friends

关于mysql - 连接循环关系(初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10914231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com