我必须在我的数据库中的表。用户朋友在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