2011-03-20 64 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';