2017-03-23 7 views
0

から行を数えるので、私はこのテーブルのmysql - 二つのテーブル

log_inに

+---------+------------+---------+ 
| date_id | date_today | user_id | 
+---------+------------+---------+ 
| 1 | 2017/03/19 | 16 | 
| 2 | 2017/03/20 | 17 | 
| 3 | 2017/03/20 | 12 | 
| 4 | 2017/03/21 | 16 | 
| 5 | 2017/03/22 | 10 | 
| 6 | 2017/03/22 | 11 | 
+---------+------------+---------+ 

file_downloads

+---------+------------+---------+ 
| date_id | date_today | user_id | 
+---------+------------+---------+ 
| 1 | 2017/03/20 | 17 | 
| 2 | 2017/03/20 | 17 | 
| 3 | 2017/03/20 | 12 | 
| 4 | 2017/03/20 | 17 | 
| 5 | 2017/03/20 | 12 | 
| 6 | 2017/03/20 | 12 | 
| 7 | 2017/03/20 | 12 | 
| 8 | 2017/03/20 | 12 | 
| 9 | 2017/03/22 | 10 | 
| 10 | 2017/03/22 | 10 | 
| 11 | 2017/03/22 | 11 | 
+---------+------------+---------+ 

を持っており、これが私の望ましい結果である:

+------------+-----------+--------+ 
| date_today | login_num | dl_num | 
+------------+---------+----------+ 
| 2017/03/19 |  1  | 0 | 
| 2017/03/20 |  2  | 8 | 
| 2017/03/21 |  1  | 0 | 
| 2017/03/22 |  2  | 3 | 
+------------+-----------+--------+ 

I任意の助けをまだmysqlに新しいです非常に高く評価されるだろう。ありがとうございました! :)

+1

私はあなたが書いたコードをお手伝いします。 – nogad

+1

'login_num'を計算する1つのサブクエリを書いてください。これは' dl_num'を計算する別のサブクエリです。これらは両方とも 'COUNT(*)'と 'GROUP BY'を使うべきです。それらに参加するにはLEFT JOINを使用してください。 http://stackoverflow.com/questions/75752/what-is-the-most-straightforwardway-to-pad-empty-dates-in-sql-results-on-ehehe – Barmar

+0

なぜですか?はっきりと日付の識別子ではない場合は、 'dateId'という名前のフィールドがありますか? –

答えて

0

私は最も簡単な方法は、union allgroup byだと思う:

select date_today, sum(login) as logins, sum(dl) as dls 
from ((select date_today, 1 as login, 0 as dl from log_in 
    ) union all 
     (select date_today, 0, 1 from file_downloads 
    ) 
    ) lfd 
group by date_today; 
+0

WHOA!これはうまくいった!どうもありがとう! :) – nobody

+0

私は何かを尋ねることができますか?何のための 'lfd'ですか?どうもありがとう! :) – nobody

+0

@nobody。 。 。これはテーブルエイリアスです。 'FROM'節でサブクエリを使用するときに必要です。 –