PHP mySQL检索问题

时间:2011-03-20 21:28:23

标签: php mysql sql

我在从数据库中的表中检索某些数据时遇到问题。

我的网站上有用户个人资料,您可以将其他用户添加到您的朋友列表中, friends表有2个collumns,添加了person的用户的user_id和'friend_id'是添加的人的user_id。

还有一个用户表,其中包含彼此的详细信息。 'user_id'包含在这两个表中,这就是表格链接在一起的方式。

我希望能够检索用户拥有的所有朋友。

问题是我的查询只返回主用户名而不是该用户的朋友

当前查询

SELECT * FROM users,  user_followers 
  WHERE users.user_id = '$userset' AND user_followers.friend_id = users.user_id`

$ userset包含登录的主要用户的user_id

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您的WHERE子句中只有一个小错误。将users.user_id = '$userset'更改为user_followers.user_id = '$userset'。这是完整的查询(也重写为使用较新的ANSI-92连接语法):

SELECT *
FROM user_followers
JOIN users
ON user_followers.friend_id = users.user_id
WHERE user_followers.user_id = '$userset'

答案 1 :(得分:0)

这解决了您的初步问题:

SELECT user.*, friend.* FROM users user 
INNER JOIN user_followers uf on user.user_id = uf.user_id
INNER JOIN users friend on uf.friend_id = friend.user_id
WHERE user.user_id = '$userset';

然而,这将返回大量不必要的数据(每行的用户。*)。最好先用简单的方法获取用户信息:

SELECT * FROM users WHERE user_id = '$userset';

然后抓住他们的朋友:

SELECT friend.* FROM user_followers uf INNER JOIN users friend on uf.friend_id = friend.user_id
WHERE uf.user_id = '$userset';