使用PHP和MySQL,我试图获得所有涉及实际用户的私人聊天。为此,我有一个名为"rooms"(id,id_ininitiate_user,id_target_user)的表和另一个名"users"(id_pseudo,avatar)的表。如果实际用户是聊天室的发起用户,我想从目标用户那里获得头像和伪像,如果实际用户为该聊天室的目标用户,我想要从发起用户那里获得化身和伪像(无论在什么情况下,我想要其他成员的化身和伪图)。
我想我的查询中需要一个条件,但我真的不知道如何管理它(整天在谷歌上搜索)。
这是我的查询(逻辑在那里,但语法明显错误:
$user_id=$_SESSION['user_id'];
$res = @mysql_query("
SELECT rooms.id, rooms.id_initiate_user, rooms.id_target_user, rooms.pv, users.id, users.pseudo, users.avatar
FROM rooms, users
WHERE
(
(rooms.id_initiate_user='$user_id' OR rooms.id_target_user='$user_id')
AND
(
IF (rooms.id_initiate_user='$user_id')
THEN rooms.id_target_user=users.id
ELSE rooms.id_initiate_user=users.id;
END IF;
)
) ORDER BY rooms.id ASC");
我在这里读到了很多关于"有条件的地点"的问题,但都没有解决我的问题。谢谢你的帮助。
你不能做这样的事情吗:
WHERE
(
(
rooms.id_initiate_user='$user_id'
AND rooms.id_target_user=users.id
)
OR
(
rooms.id_target_user='$user_id'
AND rooms.id_initiate_user=users.id
)
)