我正在創建一個聊天應用程序,用於查詢加載的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