IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Mutliples COUNT dans une requête


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Mutliples COUNT dans une requête
    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 :
    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" ;
    Cette requête fonctionne très bien cependant ,
    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

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    Avec un CASE ... WHEN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
    		s.name
    	,	COUNT (CASE WHEN t.solve_delay_stat <= s.resolution_time THEN 1 END )AS ok
    	,	COUNT (CASE WHEN t.solve_delay_stat > s.resolution_time THEN 1 END )AS ko
    	,	COUNT(*) AS total
    FROM 		`glpi_tickets` t
    INNER JOIN 	`glpi_slas` s 
    	ON		t.slas_id = s.id
    WHERE		s.id = 9

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup ça marche nikel aieeeuuuuu

    PS : juste faire attention à l'espace entre le COUNT et '(' , qui cause problème sur Mysql, retirez le et tout rentrera dans l'ordre.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ensemble de count dans une requête
    Par grunk dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/04/2010, 09h52
  2. Critère sur Count dans une Requête Croisée
    Par Nana35 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 03/12/2008, 11h46
  3. Probleme count(*) dans une requête
    Par guappi dans le forum SQL
    Réponses: 4
    Dernier message: 19/05/2008, 11h49
  4. 2 count dans une requête
    Par illegalsene dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/11/2007, 18h20
  5. [MySQL] Deux COUNT dans une requête
    Par ecchymose dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/07/2007, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo