약간 복잡한 쿼리를 수행하려고하는데 조인 중 하나만 제외하고 예상되는 데이터를 얻지 못했습니다.MySQL - SUM 조인 된 테이블 열
내 시도
SELECT email.*, email_type.*, email_subtype.*, email_dailytotal.*, SUM(email_dailytotal.fullconversions - (email_dailytotal.duplicates + email_dailytotal.invalids)) as validleads, email_week.*, SUM(adjustment) as total_adjustment, email_costmethod.*
FROM email
LEFT JOIN email_type on email.type = email_type.type_id
LEFT JOIN email_subtype on email_subtype.type_id = email_type.type_id
LEFT JOIN email_dailytotal on email_dailytotal.email_id = email.email_id
LEFT JOIN email_week on email_week.email_id = email.email_id
LEFT JOIN email_costmethod on email_costmethod.costmethod_id = email.costmethod
WHERE email.email_id = '12163'
AND business IN ("group", "dead")
AND agency="MFC"
AND start_date >="2013-02-01"
GROUP BY email.email_id, email_dailytotal.oeyearno
ORDER BY email.email_id DESC
I 얻을 거의 내가 가입 때 제외하고 원하는 email_dailytotal
email
에 :
LEFT JOIN email_dailytotal on email_dailytotal.email_id = email.email_id
나는 단지 모든 대신 email_dailytotal
에서 행 중 하나를 얻을로 해당 캠페인의 행
나는이 기본 쿼리이 작업을 수행 할 수 있습니다
SELECT SUM(fullconversions) FROM email_dailytotal WHERE email_id = 12163
결과가 27
하지만 내 전체 쿼리에서 나는 1
될 일이 첫 번째 행을 얻을.
email_dailytotal
의 최소화 구조는 다음과 같습니다
email_id | fullconversions | summarydate |
그래서 캠페인의 매일 데이터를 포함에 따라서
12163 | 1 | 2013-02-27
12163 | 10 | 2013-02-26
12163 | 15 | 2013-02-25
12163 | 1 | 2013-02-22
내 내가 대신 매우 마지막 행을 얻고 가입 요약.
어디서 잘못 알 수 있습니까?
P. 나는이 질문 인 혼란에 대해 사과합니다, 나는 sqlfiddle를 만들려고했으나, 8000 자 이상의 스키마를 만들었 기 때문에 그것이 작동하지 않을 것이므로 누군가 대답하는데 도움이된다면 아래에 그것을 포함 시켰습니다.
나는 보통 테이블의 구조를 보여줄 것이지만 합리적인 표준으로 포맷하는 데 몇 시간이 걸릴 것입니다.
데이터
이 모든 것을 제거하고 [SQL Fiddle] (http://sqlfiddle.com/)로 옮기십시오. – Kermit
+1,이 놀라운 SQL Fiddle에 대해 들어 본 적이 없습니다. 좋은 생각입니다! – Daedalus
@AarolamaBluenk - 질문에서 'P.S. 이 질문에 대한 혼란에 사과 드리며 sqlfiddle을 만들려고했으나 내 빌드 스키마가 8000자를 넘기 때문에 작동하지 않을 것입니다. 누군가 대답하는 데 도움이된다면 아래에 포함 시켰습니다. " – martincarlin87