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

Langage SQL Discussion :

Prob affichage requête SQL sur plusieurs colonnes


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut Prob affichage requête SQL sur plusieurs colonnes
    Bonjour,

    J'ai un petit soucis j'espère que quelqu'un pourra m'aider..

    Voici ma requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT glpi_users.name , glpi_tracking.status, count(glpi_tracking.ID)
     
      FROM    glpi.glpi_tracking glpi_tracking
           INNER JOIN
              glpi.glpi_users glpi_users
           ON (glpi_tracking.assign = glpi_users.ID)
    WHERE (glpi_tracking.status = 'assign') OR (glpi_tracking.status = 'waiting')
    GROUP BY glpi_users.name , glpi_tracking.status
    ORDER BY glpi_users.name ASC
    et voici le résultat de la requête :

    abeyer waiting 2
    alahaye assign 3
    alahaye waiting 4
    avacheresse assign 4
    avacheresse waiting 1
    ccollin assign 1
    cdanielou assign 15
    cgueret assign 2
    dgarcia assign 6



    Je voudrais que lorsqu'une personne à des tickets des deux status 'waiting' et 'assign' l'affichage soit le suivant :

    alahaye assign 3 waiting 4

    Il faut donc réaliser l'affichage sur des colonnes différentes en fonction de la condition du where et je ne sais pas comment faire..

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce que vous cherchez à faire est de la cosmétique et n'est pas le boulot du SGBDR mais celui du programme utilisateur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Une première remarque, aliasez la table en elle-même c'est inutile.
    Utilisez plutôt un alias court (deux ou trois caractères).

    Vous pouvez faire un pivot, par exemple comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      SELECT us.name,
             'assign'  as status_assign , count(case tr.status when 'assign'  then tr.id end) as nb_assign,
             'waiting' as status_waiting, count(case tr.status when 'waiting' then tr.id end) as nb_waiting
        FROM glpi.glpi_tracking tr
             INNER JOIN glpi.glpi_users us
               ON us.id = tr.assign
       WHERE tr.status in ('assign', 'waiting')
    GROUP BY us.name
    ORDER BY us.name asc;

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Super ça marche parfaitement je connaissais pas cette méthode !!

    Vraiment merci beaucoup pour la rapidité de la réponse !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Bonjour,

    J'ai essayé de suivre votre exemple sur une autre requête et je n'arrive pas à la faire fonctionner.. est-ce que vous voyez ou se situe l'erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT us.name,
           us.type,
           'assign'  AS status_assign , DATEDIFF(now(),(case tr.STATUS when 'assign'  then tr.date end)) AS nb_assign,
             'waiting' AS status_waiting, DATEDIFF(now(),(case tr.STATUS when 'waiting'  then tr.date end)) AS nb_waiting,
     
      FROM  glpi.glpi_tracking tr
           INNER JOIN
              glpi.glpi_users us
           ON (tr.author = us.ID)
     WHERE (us.type = 3) AND (tr.STATUS IN ('assign', 'waiting'))
    GROUP BY us.name

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il manque la fonction d'agrégat, faites un MAX ou un MIN autour de vos DATEDIFF.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    j'ai essayé mais ça ne marche toujours pas.. je comprends pas pourquoi il faut rajouter un max ou un min en plus..

    Merci tout de même.

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

Discussions similaires

  1. [MySQL] Afficher requête SQL sur 2 colonnes
    Par kate59 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/10/2008, 20h02
  2. Requête SQL sur plusieurs bases
    Par tonyparker dans le forum Requêtes
    Réponses: 5
    Dernier message: 25/09/2007, 16h48
  3. requêtes sql sur plusieurs tables
    Par zahiton dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2005, 11h59
  4. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 17h32
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 17h26

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