少し複雑なクエリを実行しようとしていますが、期待されるデータを取得していない結合の 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文字を超えていたため機能しませんでした。誰かが答えるのに役立つ場合は、以下に含めました。
通常はテーブルの構造を表示しますが、適切な標準にフォーマットするには何時間もかかります。
データ