子查询或INNER JOIN?

时间:2014-04-22 00:26:13

标签: mysql

我有3个表格,类似于电子邮件的附件。因此,电子邮件具有零个,一个或多个附件。

这三个表格为EmailsAttachmentsFiles

Emails - 每行引用一封电子邮件并包含MessageID

Attachments - 每行包含一个MessageID和一个FileID。可以有多个具有相同消息ID的行。

Files - 每行引用一个文件并包含FileID和文件大小(大小)

我试图在mysql中得到一个结果,其中包含EmailID列表和所有文件的总大小但没有成功。我可以使用SUM(Size)INNER JOIN来获取文件大小的总和,但我无法获得EmailID列表和总文件大小。

这应该使用多个INNER JOIN吗? INNER JOIN和子查询?然后是GROUP BY?子查询,然后是IN。即使是这里的方向也会非常有用。

在PHP中迭代似乎非常昂贵。

非常感谢!

1 个答案:

答案 0 :(得分:1)

SELECT
    e.msgID,
    SUM(f.size)
FROM emails e
INNER JOIN attachments a
    ON a.msgID = e.msgID
INNER JOIN files f
    ON f.fID = a.fID
GROUP BY e.msgID

我认为应该这样做。