0

我正在为一个新站点编写一个内部/私人消息/电子邮件系统,到目前为止它运行得非常好,但我只是遇到了一个障碍……垃圾文件夹。

我需要执行一个查询,其中包含字段 (a AND b) = 一个设置或 (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 上的 RIGHT JOIN = 我不知道!我确信有一种方法可以做到这一点,但我只是不太了解 MYSQL 来完成这个!

有什么建议么?

谢谢,

皮特

4

2 回答 2

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 回答
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 回答