basicalli,我有一张桌子:朋友[id,fromid,toid] [fromid]和[toid]代表用户的ID, fromid 是谁,以及 toid 谁被接受。
我认为两个用户的朋友'对于每个用户的朋友表中的项目。
示例:当我有:
时,用户1是用户2的朋友 表朋友中的:[id,1,2],[id,2,1],....
我正在尝试这个查询,正如我在标题中所说的那样让我成为'朋友',但两次:S
$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");
我不知道为什么......而你呢?
谢谢
答案 0 :(得分: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
答案 1 :(得分:1)
由于你的JOIN不限制你的查询结果(因为它是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 - 把它变成常规的JOIN,你至少可以看到更好的性能。 / p>