我正在创建一个聊天应用程序,用于查询加载的SQL表,以便在datagridview中显示用户当前的朋友列表。我遇到的问题是当前用户也出现在朋友列表中。在查询结果中返回自己的用户名的SELECT查询
该表的布局是:
create table Friendships
(
FriendshipID int IDENTITY(100,1) Primary Key,
ReceiverID int,
SenderID int,
Approved bit,
)
当某人发送一个请求,一个排在表中创建了自己的Sender ID和个人ID他们把它作为ReceiverID,它是如果有人向朋友发送朋友请求,则“相反”,并且“已批准”设置为0,直到接收方接受朋友请求。为了填充datagridview,我需要查询表并返回当前用户是发送者或接收者的所有记录,并显示他们是谁的朋友。每个关系只需要显示一次。
一个我试图查询的是:
SELECT UserID, Username, Status
FROM Arwen_Friendships, Arwen_Users
WHERE ReceiverID = UserID
OR SenderID = UserID
AND ReceiverID = @Current_User_ID
OR SenderID = @Current_User_ID
AND Approved =1
其中@Current_User_ID使用登录用户的ID当前参数。我尝试了所有方式的连接,SELECT DISTINCT和子查询,但都没有运气。上述查询的结果返回两行:一个包含登录的用户信息,另一个包含发送者或接收者的ID,并完全忽略“Approved = 1”。它将返回“Approved = 0”的行。
您应该检查您的where子句中的操作顺序,它不清楚实际情况或操作顺序。 –
绝对检查你的操作顺序,并理解使用'()'和'(())'时的'Where和How'如何组合AND和OR语句你可以包装所有的' Sql是我会建议也学会使用'表别名'如何有人应该知道哪些表的ID是从你的WHERE子句.. ??? – MethodMan
为什么在表格末尾有一个额外的逗号创建'Approved bit',' – MethodMan