【问题标题】:Mysql query and conditional where clauseMysql查询和条件where子句
【发布时间】:2012-04-20 02:42:57
【问题描述】:

使用 PHP 和 MySQL,我试图获取所有涉及实际用户的私人聊天。 为此,我有一个名为“rooms”的表(id、id_initiate_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");

我在这里阅读了很多关于“条件位置”的问题,但没有一个能解决我的问题。 感谢您的帮助。

【问题讨论】:

    标签: php mysql conditional where-clause


    【解决方案1】:

    你不能这样做吗:

    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
        )
    ) 
    

    【讨论】:

    • 没错。我从昨天开始就在这个查询中,一旦我在这里发布我的问题,我就设法找到了与你的相同的查询,这似乎工作得很好。这很有意义,但从初学者的角度来看,它不一定那么明显。谢谢阿里昂。 PS:我怎样才能投票给你谢谢?
    • 很高兴您自己找到了它。我们都是初学者。乐意效劳。或许你可以接受这个答案?
    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 2023-04-09
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多