我在从数据库中的表中检索某些数据时遇到问题。
我的网站上有用户个人资料,您可以将其他用户添加到您的朋友列表中, 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
非常感谢任何帮助。
答案 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';