1

リードとクリックという 2 つの異なるテーブルがあります。MySQL にクエリを実行して、日付順に並べられたクリックとリードによって生成されたコミッションの合計を取得したいと考えています。

鉛:

id|date      |commission
 1|2009-06-01|400
 2|2009-06-01|300
 3|2009-06-03|350

クリック:

id|date      |commission
 1|2009-06-01|1
 2|2009-06-03|2
 3|2009-06-03|1

私を与えるクエリを作成したいと思います(可能であれば、リードまたはクリックが生成されていない日付も取得します):

date      |commission click|commission lead|total commission
2009-06-01|               1|            700|             701
2009-06-02|               0|              0|               0
2009-06-02|               3|            350|             353

(実際のデータベースでは、日付は実際には datetime です。)

私は組み合わせる必要があると思います:

SELECT count(*) as number_clicks, sum(click.commission) as sum_clicks,
 date(click.time) as click_date from click group by click_date order by click_date

と:

SELECT count(*)as number_leads, sum(lead.commission) as sum_leads,
 date(lead.time) as lead_date from lead group by lead_date order by lead_date

しかし、私はそれらを一緒に働かせることができません。

4

1 に答える 1

3

これはゼロの日付を取得しません。そのため、日付テーブルまたは日付をループするストアド プロシージャが必要になります。それを行う1つの方法は、ユニオンクエリからのサブセレクトです(テストされていません):

SELECT commission_date, SUM(click_commission), SUM(lead_commission), SUM(total_commission)
FROM (SELECT DATE(click.time) AS commission_date, click.commission AS click_commission,
             0 AS lead_commission, click.commission AS total_commission
      FROM click
      UNION ALL
      SELECT DATE(lead.time) AS commission_date, 0 AS click_commission,
             lead.commission AS lead_commission, lead.commission AS total_commission
      FROM lead) AS foo
GROUP BY commission_date
ORDER BY commission_date
于 2009-06-30T01:09:07.857 に答える