Bonjour à tous!
Je débute en SQL et j'aurais besoin d'un conseil rapide:
J'ai une table qui comporte une liste d'interventions ainsi que leur date de réalisation.
ID | inter | date_inter
J'aimerais réaliser une requête qui en une seule fois m'affiche dans plusieurs colonnes le nombre de date appartenant à un interval de temps. Je m'explique:
j'associe un code couleur (jaune par ex) aux dates entre 2 et 6 mois, rouge entre 6 et 12 mois, etc...
Voici le squelette de ma requête réalisée avec des UNIONS.
Cette requête ne fonctionne pas vraiment et a l'inconvénient d'afficher les résultats sur une seule colonne et plusieurs lignes (surement à cause de l'usage de UNION)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 ( SELECT COUNT(l.Hostname) AS 'vide' FROM `liste_routeur_dates` l WHERE l.datemax IS NULL ) UNION ( SELECT COUNT(Hostname) FROM `liste_routeur_dates` l2 WHERE l2.datemax IS NOT NULL ) UNION( SELECT COUNT(Hostname) AS 'vert' FROM `liste_routeur_dates` l3 WHERE l3.datemax IS NOT NULL AND ROUND((TO_DAYS(NOW()) - TO_DAYS('l3.datemax_ft'))/30) <= 1 ) UNION ( SELECT COUNT(Hostname) AS 'jaune' FROM `liste_routeur_dates` l4 WHERE l4.datemax IS NOT NULL AND ROUND((TO_DAYS(NOW()) - TO_DAYS('l4.datemax_ft'))/30) <= 3 AND ROUND((TO_DAYS(NOW()) - TO_DAYS('l4.datemax_ft'))/30) > 1 ) UNION ( SELECT COUNT(Hostname) AS 'orange' FROM `liste_routeur_dates` l5 WHERE l5.datemax IS NOT NULL AND ROUND((TO_DAYS(NOW()) - TO_DAYS('l5.datemax_ft'))/30) > 3 AND ROUND((TO_DAYS(NOW()) - TO_DAYS('l5.datemax_ft'))/30) <=6 ) UNION ( SELECT COUNT(Hostname) AS 'rouge' FROM `liste_routeur_dates` l6 WHERE l6.datemax IS NOT NULL AND ROUND((TO_DAYS(NOW()) - TO_DAYS('l6.datemax_ft'))/30) > 6 )
vide
266
0
0
Connaissez-vous un moyen pour afficher les résultats sous la forme
nombre_vert | nombre_jaune | nombre_rouge | etc.....
J'ai le sentiment qu'une jointure du type RIGHT JOIN est nécessaire mais je n'ai pas de relations directes entre mes requêtes..
J'espère avoir été clair et vous remercie pour vos (toujours) précieux conseils.
Partager