我正在一個網站上工作,並且正在實施一個朋友系統。人們可以成爲朋友,這將解鎖一些不重要的東西。它使用MySQL編碼爲數據庫。關於mysql連接的問題
比方說這是我的帳戶表
id | name | picture
0 | Jorik | Cat.jpg
1 | Joost | Fish.jpg
2 | Henk | Ferret.png
這是朋友表(難道這要做到這一點的好辦法?)
id | user id | friend id | invite date | accepted
0 | 0 | 1 | 123 | 0
1 | 2 | 0 | 456 | 1
2 | 1 | 2 | 123 | 1
我檢查,如果他們是朋友是這樣的如下(可能是一個錯誤,但你明白了)。
$ fid =朋友ID,$ uid =用戶ID。
WHERE ((`userid` = '{$uid}' && `friendid` = '{fid}') || (`friendid` = '{$uid}' && `userid` = '{$fid}'))
首先,這是一個這樣做的有效方式還是有更好的方法嗎?
如果我想獲得一個用戶我
WHERE (`userid` = '{$uid}' || `friendid` = '{$uid}')
現在可以運行此查詢,如果我會運行此查詢用戶0好友列表,它會返回
id | user id | friend id | invite date | accepted
0 | 0 | 1 | 123 | 0
1 | 2 | 0 | 456 | 1
我曾與MySQL加入之前,但我不知道如何返回類似於以下結果
id | friend id | invite date | accepted | Name | Picture
0 | 1 | 123 | 0 | Joost | Fish.jpg
1 | 2 | 456 | 1 | Jorik | Ferret.png
它將不得不檢查它是否應該從帳戶表中加入好友ID或帶有ID的用戶ID。 (被邀請的人是朋友ID,邀請他的人將獲得用戶ID。)
我希望我提供了足夠的信息。
任何人都可以幫助我嗎?
由於提前,
Jorik
嗯,可能會工作,但沒有辦法做到這一點,如:如果`friendid` = {$ uid}那麼accountid = userid其他accountid =`friendid`現在加入帳戶表與accountid。我只是不知道如何在MySQL中做到這一點,如果它是有效的。 – Jorik 2011-02-08 18:09:19
您可能可以使用條件,但這確實會使查詢變慢。你所描述的是連接中的條件。加入說,如果有這個用戶ID的朋友行加入他們和他們各自的帳戶行。如果您的索引設置正確,這是您佈局的最佳解決方案。只要確保你在這些行上有鍵,並且如果你使用的是InnoDB,則使用約束/ FK。我傾向於同意jyeargers解決方案爲您的表格佈局,這將是處理數據的最有效方式。 – superultranova 2011-02-08 18:13:51