0

私は新しいサイトのために内部/プライベートメッセージング/電子メールシステムを書いています、そしてこれまでのところそれは非常にうまくいっています、しかし私はただひっかかった...ゴミ箱フォルダにぶつかりました。

フィールド(a AND b)= 1つの設定OR(x AND y)=別の設定であるすべてのレコードを含むクエリを実行してから、ユーザーテーブルでそのレコードを右結合して、レコード/メッセージの発信者を特定する必要があります。 。

これが私が持っているものです:

SELECT * FROM mail AS M
RIGHT JOIN users AS U on U.userid = M.frm_userid or M.to_userid /* result of WHERE */
WHERE (frm_userid='$userid' AND frm_status=3) OR (to_userid='$userid' AND to_status=3) 
ORDER BY some_date_field DESC

私はU.useridの正しい参加に固執しています=私には手がかりがありません!これを行う方法があると確信していますが、MYSQLを十分に理解していないため、これを実行できません。

助言がありますか?

ありがとう、

ピート

4

2 に答える 2

0

TO処理とFROM処理をUNIONの異なる部分に分割します。

SELECT M.to_userid FROM mail AS M
JOIN users AS U on U.userid = M.frm_userid and M.frm_status=3
WHERE M.frm_userid = '$userid'
UNION
SELECT M.frm_userid FROM mail as M
JOIN users AS U on U.userid = M.to_userid and M.to_status=3
WHERE M.to_userid = '$userid'
ORDER BY some_date_field DESC
于 2012-12-30T22:51:02.590 に答える
0

これを試して

 SELECT 
         * 
    FROM 
         mail AS M
    RIGHT JOIN 
         users AS U on (U.userid = M.frm_userid or U.userid = M.to_userid)
    WHERE 
         (frm_userid='$userid' AND frm_status=3) OR (to_userid='$userid' AND to_status=3) 
    ORDER BY 
         some_date_field DESC
于 2012-12-31T02:24:06.010 に答える