我有3个表格,类似于电子邮件的附件。因此,电子邮件具有零个,一个或多个附件。
这三个表格为Emails
,Attachments
和Files
。
Emails
- 每行引用一封电子邮件并包含MessageID
Attachments
- 每行包含一个MessageID和一个FileID。可以有多个具有相同消息ID的行。
Files
- 每行引用一个文件并包含FileID和文件大小(大小)
我试图在mysql中得到一个结果,其中包含EmailID列表和所有文件的总大小但没有成功。我可以使用SUM(Size)
和INNER JOIN
来获取文件大小的总和,但我无法获得EmailID列表和总文件大小。
这应该使用多个INNER JOIN
吗? INNER JOIN
和子查询?然后是GROUP BY
?子查询,然后是IN
。即使是这里的方向也会非常有用。
在PHP中迭代似乎非常昂贵。
非常感谢!
答案 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
我认为应该这样做。