1

我为附件创建了一个文件上传器,AJAX 在将它们添加到电子邮件时将它们上传。我有一个显示所有电子邮件附件的页面。但是,如果用户决定不将电子邮件保存为草稿并且也不发送,他们的附件仍然在数据库中。

我仍想在附件页面上显示非关联附件(没有电子邮件 ID 关联,因此不会JOIN与消息表关联)。

这是我当前的查询...

SELECT em.date, em.headers_from, em.subject, ea.filename 
FROM email_attachments AS ea 
LEFT JOIN email_messages AS em ON em.id=ea.id_email 
WHERE em.id_user='1' 
ORDER BY date DESC
4

2 回答 2

1

原来我需要一个LEFT OUTER JOIN.

SELECT * FROM email_attachments AS ea
LEFT OUTER JOIN email_messages AS em
ON ea.id_email = em.id
WHERE ea.id_user='1'

我遇到的有帮助的视觉解释可以在这里找到......

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

于 2013-10-17T10:04:39.897 回答
1

您正在检查消息表,即em.id_user=1. 因此,您没有获得所需的输出,请将子句移至连接条件。

像这样::

SELECT em.date, em.headers_from, em.subject, ea.filename 
FROM email_attachments AS ea 
LEFT JOIN email_messages AS em ON em.id=ea.id_email and em.id_user='1'
ORDER BY date DESC
于 2013-10-17T09:31:42.070 回答