2010-09-06 97 views
1

編輯:lawrence。php MySql QUERY朋友關係表幫助

我從用戶,朋友 得到了正確的查詢現在

SELECT * 其中(users.id = friends.user_id1和friends.user_id2 = $配置文件ID)或(users.id = friends.user_id2和friends.user_id1 = $配置文件ID)

問題回答

我需要一些幫助加入我的朋友的結果和用戶表

這是我的朋友表是什麼樣子

id  user_id1  user_id2 
1   | 2         | 3 
1   | 2         | 4 
1   | 2         | 5 
1   | 6         | 2 

用戶表

id name 
2 |  sarah 
3 |  emma 
4 |  lawrence 
5 |  cynthia 
6 |  suzie 

我可以很容易地只是有兩行對每個關係,並做了簡單的查詢。
但我更喜歡有關係的每一個行,

所以讓我們假設,我們在看網頁member.php?輪廓= 2
並有好友列表,什麼是查詢樣子。

這工作得很好,如果我有關係,每兩排,但我不希望出現這種情況....

SELECT * FROM friends, users WHERE friends.user_id1 = $profileID AND friends.user_id2 = users.id ORDER BY friends.id DESC LIMIT 16 

你聽到了嗎?沿東西像

SELECT * FROM friends,users WHERE friends.user_id1 = $profileID AND ALSO WHERE friends.user_id2 = $profileID AND THEN GET FROM users WHERE users.id = friends.user_id1 AND ALSO WHERE users.id = friends.user_id2 

我希望我自己清楚

+0

爲什麼朋友id全部設置爲1? – RobertPitt 2010-09-06 15:07:01

+0

他們不是正確的查詢,但對任何明白我想完成的人,也許可以幫助我,我有搜索組查詢和喜歡 – lawrence 2010-09-06 15:09:29

回答

0

我不知道我理解你的問題,但不會做這?

SELECT * FROM friends, users where friends.user_id1 = $profileID or friends.userid2 = $profileID and users.id = friends.user_id1 or users.id = friends.user_id2 
+0

我以前試過,你會認爲它可以工作,但我的結果5個結果,而不是4個結果,就像你看我的朋友表一樣 – lawrence 2010-09-06 15:16:00

0

你想要一個left join(使用LEFT JOIN操作),而不是一個cartesian join(使用FROM table1, table2語法)。

http://www.w3schools.com/sql/sql_join_left.asp

提示:有了您的交叉引用表,而不是有一個ID列,您可以創建一個複合鍵。