2017-03-23 6 views
0

so habe ich diese Tabellenmysql - count Zeilen aus zwei Tabellen

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 | 
+---------+------------+---------+ 

und dies ist mein gewünschtes Ergebnis:

+------------+-----------+--------+ 
| 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 bin noch neu bei mysql also jede hilfe würde sehr geschätzt werden. Danke! :)

+1

Ich werde mit dem Code helfen Sie geschrieben haben. – nogad

+1

Schreiben Sie eine Unterabfrage, die 'login_num' berechnet, eine weitere Unterabfrage, die' dl_num' berechnet. Diese sollten beide COUNT (*) und GROUP BY verwenden. Verwenden Sie 'LEFT JOIN', um sich ihnen anzuschließen. Sie können auch sehen http://stackoverflow.com/questions/75752/what-is-the-most-treightforward-way-to-pad-empty-dates-in-sql-results-on-either – Barmar

+0

Warum sind die Felder mit dem Namen 'dateId', wenn sie eindeutig keine Bezeichner für die Daten sind? –

Antwort

0

Ich denke, der einfachste Weg ist, union all und group 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! Das hat funktioniert! Danke vielmals! :) – nobody

+0

Darf ich etwas fragen tho? Wofür ist das "Lfd"? Danke vielmals! :) – nobody

+0

@nobody. . . Es ist ein Tabellenalias. Es wird benötigt, wenn Sie eine Unterabfrage in der FROM-Klausel verwenden. –