Es gibt eine Tabelle, die Daten als solche ist:MySQL: Wählen Sie alle Termine zwischen Datumsbereich und erhalten Datentabelle Termine passende
-----------------------
| id | date |
-----------------------
| 1 | 2016-07-11 |
| 2 | 2016-07-11 |
| 3 | 2016-07-15 |
| 4 | 2016-07-15 |
| 5 | 2016-07-15 |
| 6 | 2016-07-16 |
| 7 | 2016-07-19 |
| 8 | 2016-07-20 |
-----------------------
Ich möchte einen Datumsbereich erhalten (alle Termine) und die Anzahl der IDs Gibt für jedes Datum 0 zurück, wenn keine Datensätze vorhanden sind.
Wenn für Termine zwischen 2016.07.10 bis 2016.07.20 ausführen, sollte das Ergebnis wie folgt aussehen:
--------------------------
| date | count(id) |
--------------------------
| 2016-07-10 | 0 |
| 2016-07-11 | 2 |
| 2016-07-12 | 0 |
| 2016-07-13 | 0 |
| 2016-07-14 | 0 |
| 2016-07-15 | 3 |
| 2016-07-16 | 1 |
| 2016-07-17 | 0 |
| 2016-07-18 | 0 |
| 2016-07-19 | 1 |
| 2016-07-20 | 1 |
--------------------------
ich für getting a date range Lösungen gefunden haben, aber konnte nicht herausfinden, wie man Holen Sie es, um die IDs zu zählen, die für diese Daten in einer Tabelle existieren.
Danke!
können Sie die Aggregatfunktion "Count" verwenden, wobei Ihre Select-Abfrage keine Datensätze für ein bestimmtes Datum zählt. –
Erstellen Sie einmal täglich oder monatlich [Helper Tables] (http:// Stackoverflow.com/a/37739514) einmal und verwenden Sie sie oft. Für viel schnellere Joins, die sie jedes Mal im laufenden Betrieb hacken. – Drew
Drew, bist du sicher? – Strawberry