有朋友的用户在SQL中查询

时间:2009-12-23 13:15:55

标签: sql

我必须在数据库中使用表格。

用户

 - id
 - username

 - user_id (invitor)
 - friend_id (that get invitation)
 - accepted

现在如果用户#1邀请用户#2成为朋友并且#2接受,我希望用户2显示在用户1的站点上,用户1显示在用户2的站点上。

我无法弄清楚对此的查询应该如何。

如何编写查询以在同一SQL查询中返回用户及其朋友?

3 个答案:

答案 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]

您必须使用数据库中适用的内容替换括号内的值...