我必须在数据库中使用表格。
用户
- id
- username
友
- user_id (invitor)
- friend_id (that get invitation)
- accepted
现在如果用户#1邀请用户#2成为朋友并且#2接受,我希望用户2显示在用户1的站点上,用户1显示在用户2的站点上。
我无法弄清楚对此的查询应该如何。
如何编写查询以在同一SQL查询中返回用户及其朋友?
答案 0 :(得分:0)
SELECT users.username FROM users, friends WHERE friends.accepted = 1 AND friends.user_id = ... AND friends.friend_id = users.id
?
答案 1 :(得分:0)
假设您显示该页面的用户的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 :(得分:0)
如果我理解正确,我认为这对你有用......
让用户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]
您必须使用数据库中适用的内容替换括号内的值...