2011-02-02 16 views
0

basicalli,我有一個表:朋友[id,fromid,toid] [fromid]和[toid]代表用戶,fromid是誰問的,toid誰是acepted的。

我認爲兩個用戶的朋友在哪裏是朋友表中的物品。

例如:用戶1的用戶2的朋友,當我有:

在表朋友:[ID,1,2],[ID,2,1],....

林與此查詢嘗試,就像我在標題說讓我的「friens」,但兩次:■

$sqlQueryCat5 = mysql_query("SELECT friends.*,usuarios.alias AS nombre_amigo FROM friends LEFT JOIN usuarios ON friends.toid=usuarios.id AND friends.fromid='$this->id' ORDER BY id"); 

我不知道爲什麼..你呢?

謝謝

回答

1

它看起來像你有另一個查詢,你沒有在這裏顯示。
這個查詢本身只顯示好友一次,因爲friends.fromid='$this->id'的意思是fromid只能是id問的。

如果你的表總是包含[1,2]和[2,1](兩者),那麼你只需要查詢一方得到另一方。

SELECT friends.*,usuarios.alias AS nombre_amigo 
FROM usuarios 
INNER JOIN friends ON friends.fromid=usuarios.id 
WHERE usuarios.id='$this->id' 
ORDER BY id 
+0

工作正常,歡呼! :d – 2011-02-02 01:36:51

1

由於您的連接不是限制您的查詢的結果(因爲它是一個LEFT JOIN而不是INNER JOIN),我猜你想要的朋友限制器進入你的WHERE子句,像這樣:

$sqlQueryCat5 = mysql_query("SELECT friends.*, usuarios.alias AS nombre_amigo " 
. "FROM friends " 
. "LEFT JOIN usuarios ON friends.toid=usuarios.id " 
. "WHERE friends.fromid=$this->id" 
. "ORDER BY id"); 

編輯:在您的查詢重新看,我猜,你實際上沒有一個理由使用LEFT JOIN - 把它變成一個常規連接,你可以在最起碼看到了比較好的表現。

相關問題