在OR或者结果上使用OR和右连接的mysql查询

时间:2012-12-30 22:44:33

标签: mysql join

我正在为一个新网站编写一个内部/私人消息/电子邮件系统,到目前为止它已经非常好了,但我只是遇到了一个问题......垃圾文件夹。

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

有什么建议吗?

谢谢,

皮特

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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