2014-02-14 75 views
0

我一直在尋找這個觀看了幾個視頻的答案,但我似乎無法找到一個很好的答案。我想在我的網站上創建一個朋友系統。我目前設立了一個我認爲正確的多對多系統。我應該每個成員都有一個數據庫,包含他們所有的朋友?Managin在社交網站的mysql數據庫中的朋友

但我的主要問題是,當我得到所有的朋友ID。我如何得到他們的名字?我可以使用它爲每個成員連接數據庫一次。

<?php foreach ($friend as $person) { 
friend_names[] = mysqli_query($con, "SELECT username FROM users WHERE id='$person'"); 
} ?> 

但是有沒有一種簡單的方法可以在一個查詢中完成所有操作。我嘗試過使用不同的連接,但是之後它會記錄數據庫中的所有名稱,而不僅僅是登錄的用戶朋友。那麼我將不得不爲每個包含好友ID的成員使用一個數據庫。也當我使用

SELECT users.username 
FROM relationships 
INNER JOIN users ON relationships.user_1 = users.id 

它也添加我的用戶名。任何人都可以解釋我應該怎麼做。所以我不必坐在YouTube上聽人們解釋函數如何工作:S?

DB的關係

CREATE TABLE IF NOT EXISTS `relationships` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`user_1` int(11) NOT NULL, 
`user_2` int(11) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 
+0

請發佈您的數據庫架構。並且'JOIN'可能是去這裏的方式 – kero

+1

_「我應該爲每個成員有一個數據庫」_ _ _什麼_ _當然不是。 //你應該更多地學習使用SQL處理數據的_basics_,因爲它聽起來像你知道現在很少。 – CBroe

+0

我已經添加了分貝。 CBroe。我確實知道它很愚蠢,但我找不到用一個數據庫來完成的方法。 用戶信息位於一個名爲users的數據庫中,其中包含更多信息,但與此相關的重要性是username和id – Mcclane654

回答

0
select users.username 
from relationships 
inner join users on relationships.user_2=users.id  
and relationships.user_1=2; 

你需要在你的數據庫來使用此。你只需要用會話用戶ID在最後更改代碼(relationships.user_1 = 2):

編輯: 獲取全部內容在一個查詢中。我還添加了一行狀態(封鎖,朋友,待定請求):

SELECT users.username 
FROM relationships 
INNER JOIN users ON ((relationships.user_1 = users.id AND relationships.user_2='$user') 
or (relationships.user_2 = users.id AND relationships.user_1='$user')) 
and relationships.status=1