2009-06-30 10 views
1

私は2つの異なるテーブル、鉛とクリックを持っています。私はMySQLに問い合わせて、クリックによって生成されたコミッションと日付順のリードの合計を取得したいと思います。MySQLの日付による2つのテーブルからのグループ合計

リード:

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 

は(日付は、実際には、実際のデータベースの日時である。)

私は私が結合する必要が推測:

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 

しかし、私は彼らが一緒に動作させることはできません。

+0

古代の質問を編集するのはなぜですか?謝罪。 – Strawberry

答えて

2

これは、ゼロを持つ日付を取得しません。日付をループするには、日付テーブルまたはストアドプロシージャが必要です。これを行う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 
+0

"すべての派生テーブルには別のエイリアスが必要です"が表示されますが、最後のSELECTの後とGROUPの前に "AS foo"を追加した後、尋ねられたとおりに機能します。ありがとう! – boingboing

+0

エイリアスを含めるようにクエリを編集しました。それがうまくいった:) –

関連する問題