Bonjour à tous, et merci d'avance pour votre aide.
Je vous explique mon problème.
Je voudrais éxécuter une requête avec plusieurs count dans le select
Voici me première table 'glpi_tickets'
id slas_id solve_delay_stat
Voici ma seconde table 'glpi_slas'
id resolution_time
pour un ticket j'ai un SLA
Je voudrais lister tous les SAL avec pour chaque SLA
- Le nom du SLA
- Le nombre de tickets qui respecte le sla (ticket.solve_delay_stat < sla.resolution_time)
- Le nombre de tickets qui ne respecte pas le sla (ticket.solve_delay_stat > sla.resolution_time)
- Le total de ticket qui sont rattachés au SLA
Voila la seul requête que j'ai réussi à construire pour le moment :
Cette requête fonctionne très bien cependant ,
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 SELECT table1.name,table1.ok, table2.ko,table3.total FROM (SELECT count(t.id) as ok , s.name from `glpi_tickets` t INNER JOIN `glpi_slas` s ON t.slas_id = s.id WHERE t.solve_delay_stat <= s.resolution_time AND s.id = 9) table1, (SELECT count(t.id) as ko , s.name from `glpi_tickets` t INNER JOIN `glpi_slas` s ON t.slas_id = s.id WHERE t.solve_delay_stat >= s.resolution_time AND s.id = 9) table2, (SELECT count(t.id) as total, s.name from `glpi_tickets` t INNER JOIN `glpi_slas` s ON t.slas_id = s.id WHERE s.id = 9) table3" ;
je dois optimiser la requête pour n'avoir qu'une seul requête (pas de sous requête)
avec un WHERE sur l'id du SLA et sur le temps de résolution
(car je passe cette requête à un framework (maison) qui génère ensuite un rapport) -> mais qui ne prend pas en charge les sous requête.
Je suis un peu perdu je n'arrive pas à la réduire...
Si quelqu'un à déjà fait ce genre de requête ... je suis preneur..
Merci d'avance pour votre aide
Cordialement
Partager