3

PHPとMySQLを使用して、実際のユーザーが関与するすべてのプライベートチャットを取得しようとしています。そのために、「rooms」(id、id_initiate_user、id_target_user)というテーブルと、「users」(id_pseudo、avatar)という別のテーブルがあります。実際のユーザーがチャットルームの開始ユーザーである場合は、ターゲットユーザーからアバターと疑似を取得し、実際のユーザーがその部屋のターゲットユーザーである場合は、開始ユーザーからアバターと疑似を取得します。ユーザー(いずれにせよ、他のメンバーのアバターと疑似が必要です)。

クエリに条件が必要だと思いますが、それを管理する方法が本当にわかりません(1日中グーグルで検索)。

これが私のクエリです(ロジックはありますが、構文は明らかに間違っています:

$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");

私はこのあたりで「条件付きの場所」に関する質問をたくさん読みましたが、どれも私のケースを解決しませんでした。ご協力ありがとうございました。

4

1 に答える 1

3

あなたはこのようなことをすることはできません:

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
    )
) 
于 2012-04-06T13:40:01.733 に答える