我必須在我的數據庫中的表。用戶朋友在SQL查詢
用戶
- id
- username
朋友
- user_id (invitor)
- friend_id (that get invitation)
- accepted
現在,如果用戶#1邀請用戶#2是朋友和#2接受,我想用戶2用戶1的顯示網站和用戶2的網站上的用戶1。
我無法弄清楚這個查詢應該如何。
我如何編寫一個查詢返回在同一個SQL查詢的用戶和他們的朋友?
我必須在我的數據庫中的表。用戶朋友在SQL查詢
用戶
- id
- username
朋友
- user_id (invitor)
- friend_id (that get invitation)
- accepted
現在,如果用戶#1邀請用戶#2是朋友和#2接受,我想用戶2用戶1的顯示網站和用戶2的網站上的用戶1。
我無法弄清楚這個查詢應該如何。
我如何編寫一個查詢返回在同一個SQL查詢的用戶和他們的朋友?
SELECT users.username FROM users, friends WHERE friends.accepted = 1 AND friends.user_id = ... AND friends.friend_id = users.id
?
假設你是顯示在頁面的用戶的ID是5:
用戶邀請朋友:
SELECT username
FROM users, friends
WHERE id = friend_id AND user_id = 5 AND accepted = 1
爲其發送邀請給用戶的朋友
SELECT username
FROM users, friends
WHERE id = user_id AND friend_id = 5 AND accepted = 1
在一個查詢:
SELECT username
FROM users, friends
WHERE
(
(id = friend_id AND user_id = 5)
OR
(id = user_id AND friend_id = 5)
)
AND accepted = 1
如果我理解正確,我認爲這會爲你工作...
對於用戶2顯示用戶1頁...
SELECT U.ID, U.UserName
FROM Friends F
INNER JOIN Users U ON F.Friend_ID = U.ID
WHERE
F.User_ID = [User 1 ID]
AND F.Accepted = [True|1]
對於用戶1到用戶出現第2頁。 ..
SELECT U.ID, U.UserName
FROM Friends F
INNER JOIN Users U ON F.User_ID = U.ID
WHERE
F.Friend_ID = [User 2 ID]
AND F.Accepted = [True|1]
你有什麼在你的數據庫應用,以取代括號內的值...
不應該'用戶,friends'是'用戶內部聯接friends'還是我只是在想g的T-SQL?我認爲「逗號加入」(或其他稱爲)會在T-SQL中折舊。 – 2010-01-30 02:11:45