2014-04-22 139 views
0

我有3個表格,表示類似電子郵件的附件。因此,電子郵件具有零個,一個或多個附件。子查詢或INNER JOIN?

這三個表EmailsAttachmentsFiles

Emails - 每一行指的是一個電子郵件,包含郵件ID

Attachments - 每行包含一個郵件ID和寫到FileID。可以有多個具有相同消息ID的行。

Files - 每一行指的是一個文件,包含一個寫到FileID和文件大小(尺寸)

我試圖讓MySQL中的結果,其中包含EMAILID的列表和所有文件的總大小和沒有成功。我可以使用SUM(Size)INNER JOIN獲得文件大小的總和,但我無法獲得EmailID和文件總大小的列表。

這個應該使用多個INNER JOIN嗎? INNER JOIN和子查詢?然後一個GROUP BY?子查詢,然後是IN。即使在這裏的方向將是非常有幫助的。

使用PHP進行迭代似乎非常昂貴。

非常感謝!

回答

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 

我認爲應該這樣做。

+0

現在很漂亮。而且快。謝謝!! (我不能說我獲得GROUP BY如何爲我申請點擊的順序,但它有效,我會盯着它很長一段時間。) –