少し複雑なクエリを実行しようとしていますが、期待されるデータを取得していない結合の 1 つを除いて、必要なものはほとんどあります。
私の試み
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
email_dailytotal
に参加するときを除いて、私はほとんど欲しいものを手に入れますemail
:
LEFT JOIN email_dailytotal on email_dailytotal.email_id = email.email_id
email_dailytotal
そのキャンペーンのすべての行ではなく、1 つの行のみを取得するためです。
これは、次の基本的なクエリで実行できます。
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
したがって、私の結合では、合計ではなく最後の行を取得しています。
誰かが私が間違っているところを指摘できますか?
PSこの質問の混乱をお詫びします。sqlfiddleを作成しようとしましたが、ビルドスキーマが8000文字を超えていたため機能しませんでした。誰かが答えるのに役立つ場合は、以下に含めました。
通常はテーブルの構造を表示しますが、適切な標準にフォーマットするには何時間もかかります。
データ