2011-03-20 62 views
1

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

我有我的网站上的用户配置文件,你可以添加其他用户到你的朋友列表, 朋友表有2个列,添加该用户的用户的user_id和添加该用户的user_id的'friend_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

您的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' 
+0

真的很感激,它完美地工作三江源 – Lit 2011-03-20 21:38:01

+0

我也有一个表,他们的用户图像in,再次由user_id链接。我将如何加入这张桌子? – Lit 2011-03-20 22:17:52

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';