On 19.01.2020 21:14, Sebastian Suchanek wrote:
(schnipp)
> Man findet ...
> allenthalben den Vorschlag, sich eine Hilfstabelle zu
> bauen, die alle im Endergebnis gewünschten Zeitblöcke enthält und die
> eigentliche Datentabelle dann mit einem LEFT JOIN mit der Hilfstabelle
> zu verknüpfen. Vom Prinzip ebenfalls völlig logisch.
>
> Aber: Wie bekommt so eine Hilfstabelle in der Praxis am besten?
IMHO am elegantesten ist die Verwendung der Sequence Engine. Die gibt es als
Plugin für MySQL. Bzw. wenn man MariaDB benutzt, dann ist man schon da:
MariaDB [none]> use test;
Database changed
MariaDB [test]> show tables;
Empty set (0.01 sec)
MariaDB [test]> select seq, 2019+floor(seq/12) as year, (seq%12)+1 as month
from seq_2_to_13;
+-----+------+-------+
| seq | year | month |
+-----+------+-------+
| 2 | 2019 | 3 |
| 3 | 2019 | 4 |
| 4 | 2019 | 5 |
| 5 | 2019 | 6 |
| 6 | 2019 | 7 |
| 7 | 2019 | 8 |
| 8 | 2019 | 9 |
| 9 | 2019 | 10 |
| 10 | 2019 | 11 |
| 11 | 2019 | 12 |
| 12 | 2020 | 1 |
| 13 | 2020 | 2 |
+-----+------+-------+
12 rows in set (0.00 sec)
https://mariadb.com/kb/en/sequence-storage-engine/
HTH, XL