我想結合查詢中的三個表 - 日期,潛在顧客和點擊。聯合計數或加入總和 - MySQL
的表是這樣的:
日期:
|date|
鉛:
id|time|commission
點擊:
id|time|commission
表格日期只是存儲日期,用於獲取沒有點擊或導致的日期。
因此,如果我們有表中的以下數據:
日期:
2009-06-01
2009-06-02
2009-06-03
鉛:
1|2009-06-01|400
2|2009-06-01|300
3|2009-06-03|350
點擊:
1|2009-06-01|1
2|2009-06-03|2
3|2009-06-03|2
4|2009-06-03|0
我想獲得日期,點擊次數,由點擊產生的佣金(有點擊不給佣金),銷售線索數量,由銷售線索和佣金產生的佣金。因此,與上述我的表想獲得:
2009-06-01|1|1|2|700|701|
2009-06-02|0|0|0|0|0
2009-06-03|3|4|1|350|354|
我曾嘗試用下面的工會:
SELECT
campaign_id,
commission_date,
SUM(click_commission) AS click_commission,
click,
SUM(lead_commission) AS lead_commission ,
lead,
SUM(total_commission) as total_commission
FROM(
SELECT
click.campaign_id AS campaign_id,
DATE(click.time) AS commission_date,
click.commission AS click_commission,
(SELECT count(click.id) from click GROUP BY date(click.time)) as click,
0 as lead_commission,
0 as lead,
click.commission AS total_commission
FROM click
UNION ALL
SELECT
lead.campaign_id AS campaign_id,
DATE(lead.time) AS commission_date,
0 as click_commission,
0 as click,
lead.commission AS lead_commission,
lead.id as lead,
lead.commission AS total_commission
FROM lead
UNION ALL
SELECT
0 AS campaign_id,
date.date AS commission_date,
0 AS click_commission,
0 as click,
0 AS lead_commission,
0 as lead,
0 AS total_commission
FROM date
) AS foo
WHERE commission_date BETWEEN '2009-06-01' AND '2009-07-25'
GROUP BY commission_date
ORDER BY commission_date LIMIT 0, 10
但是,這並不工作,以計算點擊次數和潛在客戶的兩個號碼,代碼上面給出了所有線索上適量的點擊量0。如果我移動代碼並從主表中選擇,我會在所有的點擊中獲得引導權利。我一直無法找到從查詢中獲得兩個計數的方法。
於是,我就不是一個左聯接:
SELECT
date.date as date,
count(DISTINCT click.id) AS clicks,
sum(click.commission) AS click_commission,
count(lead.id) AS leads,
sum(lead.commission) AS lead_commission
FROM date
LEFT JOIN click ON (date.date = date(click.time))
LEFT JOIN lead ON (date.date = date(lead.time))
GROUP BY date.date
LIMIT 0 , 30
與此查詢的問題是,如果有一個以上的點擊,或者導致一個日期,將返回預期值* 2。所以2009年-06-01它將返回1400,而不是預期的700美元,作爲牽頭佣金。
所以在UNION中,我遇到了計數問題,在左邊的連接中,它是SUM不工作。
如果可能的話,我真的想堅持UNION,但我還沒有找到一種方法從它得到兩個計數。
(這是後續的this之前的問題,但由於我沒有要求計數,因此我發佈了一個新問題。)
如果有人知道了解決UNION ALL我會非常渴望知道解決方案,因爲該聯盟更多容易與LEFT JOIN合作。 – boingboing 2009-07-09 14:37:05