Petite application pratique de notre article Compter jusqu’à 100 avec MySQL, afficher les heures de la journée au format heure :
select Concat( Lpad((Unites.Nombre + (Dizaines.Nombre-1)*10 -1), 2, 0), ':00') as Heure
from (
Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
) As Unites
inner join (
Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
) As Dizaines on 1=1
where (Unites.Nombre + (Dizaines.Nombre-1)*10 -1) <= 23
WITH LesJours as (
select TO_DATE('2018-12-31', 'YYYY-MM-DD') - (level-1) as Jour
from dual
connect by level <= (TO_DATE('2018-12-31', 'YYYY-MM-DD') - TO_DATE('2018-01-01', 'YYYY-MM-DD') +1)
order by Jour
)
select *
from LesJours
Il est parfois utile de compter simplement pour ensuite faire une jointure sur cette liste.
Pour MySQL, il faut utiliser une méthode un peu brute et sans table temporaire.
select Unites.Nombre + (Dizaines.Nombre-1)*10 as Nombre
from (
Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
) As Unites
inner join (
Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
) As Dizaines on 1=1