1

1 日あたりのバナー統計を追跡するために、2 つの MySQL テーブルがあります。ビュー用に 1 つ、クリック用に 1 つのテーブル。両方のテーブルは次のように設定されています。

クリック数:

banner_id (int 11)
click_date (date)
click_total (int 11)

ビュー:

banner_id (int 11)
view_date (date)
view_total (int 11)

月ごとの統計を取得する必要があります。このために、私はこのクエリを取得しました(ビュー用):

SELECT 
  bv.`view_date`,
  SUM(bv.`view_total`) AS view_total 
FROM
  tarlo.`tarlo_banners_views` bv 
WHERE bv.`banner_id` = 469 
GROUP BY bv.`banner_id` 
ORDER BY bv.`view_date` ASC ;

クリックについては、ほとんど同じように見えるクエリがあります。PHP では、日付ごとに両方の結果を 1 つの配列に結合します。ここで、(2 つではなく) 1 つの MySQL クエリで結果を組み合わせることができるかどうか疑問に思っていました。

したがって、次のような結果が必要です。

Date:       Clicks:   Views:
2013-07-07  556       156833
2013-07-08  726       175683
2013-07-09  356       130588

次のような 2 つの結果セットの代わりに:

Date:       Clicks:
2013-07-07  556
2013-07-08  726
2013-07-09  356

Date:       Views:
2013-07-07  156833
2013-07-08  175683
2013-07-09  130588

どうすればこれを行うことができますか?

4

2 に答える 2

1

何かのようなもの:

SELECT 
  bv.`view_date`,
  SUM(bv.`view_total`) AS view_total,
  SUM(bc.`click_total`) AS click_total,
FROM
  tarlo.`tarlo_banners_views` bv, tarlo.`tarlo_banners_clicks` bc
WHERE bv.`banner_id` = 469
AND bc.`banner_id` = bv.`banner_id`
AND bc.`click_date` = bv.`view_date`
GROUP BY bv.`banner_id`
ORDER BY bv.`view_date` ASC ;
于 2013-07-09T13:03:56.657 に答える
0

JOIN次のように両方のテーブルを作成する必要があります。

SELECT 
    bv.`view_date`,
    SUM(bv.`view_total_views`) AS view_total_views,
    SUM(bc.`view_total_clicks`) AS view_total_click
FROM
    tarlo.`tarlo_banners_views` bv
JOIN
    tarlo.`tarlo_banners_clicks` bc
WHERE bv.`banner_id` = 469 
GROUP BY bv.`banner_id` 
ORDER BY bv.`view_date` ASC ;
于 2013-07-09T13:02:31.857 に答える