2014-04-22 2 views
0

이메일 첨부 파일과 같은 것을 나타내는 3 개의 테이블이 있습니다. 따라서 이메일에는 0 개 이상의 첨부 파일이 있습니다.하위 쿼리 또는 INNER JOIN?

세 테이블은 Emails, AttachmentsFiles입니다.

Emails은 - 각 행은 하나의 이메일을 의미하고의 MessageID

Attachments 포함 - 각 행은의 MessageID와 FileID에 포함되어 있습니다. 동일한 Message ID를 가진 여러 행이있을 수 있습니다.

Files

이 - 각 행은 하나 개의 파일을 참조하고 FileID에 파일 크기 (크기)

내가 EMAILID 목록과 모든 파일의 전체 크기를 포함 MySQL의에서 결과를 얻기 위해 노력하고 있어요를 포함하고 성공하지 못했습니다. 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가 나를 위해 적용된 클릭을 얻는 방법에 대한 순서를 얻지 못한다고 말할 수는 없지만, 그것은 효과가있다. 그리고 나는 오랫동안 그것을 꼼짝 않고 바라 볼 것이다.) –