1

次のようなテーブルを持つメッセージング システム (非常に基本的な) があります。

**MESSAGE_ID**  **RUSER_ID**    **SUSER_ID**    **MESSAGE_DATA**    **DATE**

RUSERは受信ユーザーで、SUSERは送信ユーザーです。特定のユーザー メッセージを出力するクエリを出力したい場合は、現在次のようにします。

RUSER_ID=$USER_ID または SUSER_ID=$USER_ID の PRIVATE_MESG から * を選択します

これにより、その USER_ID に関連付けられているすべての message_id が得られます。私が望むのは、特定のユーザーに関連付けられたRUSER_IDまたはSUSER_IDに関連付けられたIDのみを生成する列を作成することです。RUSER_ID または SUSER_IDが USER_ID と等しいメッセージを選択する必要がありますが、USER_IDではないメッセージのみを表示します

次に、そのクエリの出力でグループを作成したいと思います。

どんな助けでも大歓迎です!

ありがとう!

update私は本当にmessage_idを探しているのではなく、その人が書いた、または受け取ったユーザーのリストを探しているだけです。

更新 誰もが知っているように、私はこの質問に対する答えを完璧に受け取りました! 後で微調整して、日付順に新しいものから古いものへと表示されるようにしました。DATE() 関数と TIME() 関数を使用して、DATETIME を DATE と TIME に分割することでこれを行いました。これが私の最後のクエリでした:

    SELECT
    IF(RUSER_ID = $USER, SUSER_ID, RUSER_ID) as THE_OTHER_GUY, DATE(DATE) as DAY, TIME(DATE) as TIME
    FROM PRIVATE_MESG
    WHERE RUSER_ID = $USER
OR SUSER_ID = $USER;
group by THE_OTHER_GUY ORDER BY DAY DESC, TIME DESC

これが次の人に役立つことを願っています!

4

2 に答える 2

1

クエリできます:

SELECT
    *,
    IF(RUSER_ID = $USER_ID, SUSER_ID, RUSER_ID) as THE_OTHER_GUY
FROM PRIVATE_MESG
WHERE RUSER_ID = $USER_ID
    OR SUSER_ID = $USER_ID;
于 2012-06-25T18:41:13.423 に答える
0
SELECT SUSER_ID FROM PRIVATE_MESG WHERE RUSER_ID=$USER_ID
UNION
SELECT RUSER_ID FROM PRIVATE_MESG WHERE SUSER_ID=$USER_ID


- $USER_ID にメッセージを送信したユーザー ID のリスト - $USER_IDから
メッセージを受信したユーザー ID のリスト

UNION は、2 つのリストを 1 つの結果セットにグループ化します。

于 2012-06-25T18:30:29.190 に答える