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 :

Afficher les résultats de plusieurs requêtes dans un même tableau


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Afficher les résultats de plusieurs requêtes dans un même tableau
    Bonjour,
    je cherche à afficher dans un même tableau les résultats de plusieurs requêtes qui s'applique sur la même table avec des critères différents. Les résultats de mes trois requêtes ont quatre colonnes identiques (pole, fournisseur, année, mois) et je voudrais pouvoir ajouter des colonnes qui seraient des stats suivant différents critères. voici mes requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT nomPole AS Pôle, nomFournisseur AS Fournisseur, year( datevalidation ) AS Année, month( dateVT ) AS Mois, count( * ) AS Volume, AVG( taux ) AS CTTVX
    FROM fiche, utilisateur, equipe, pole, fournisseur
    WHERE year( dateVT ) >2010
    AND fiche.fichechantier =0
    AND fiche.activestats =1
    AND fiche.etat !=0
    AND utilisateur.idUtilisateur = fiche.idUtilisateur
    AND utilisateur.idEquipe = equipe.idEquipe
    AND equipe.idpole = pole.idpole
    AND fiche.idfournisseur = fournisseur.idfournisseur
    GROUP BY nomPole, nomFournisseur, year( dateVT ) , month( dateVT )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT nomPole AS Pôle, nomFournisseur AS Fournisseur, year( datevalidation ) AS Année, month( dateVT ) AS Mois, count( * ) AS Echecs
    FROM fiche, utilisateur, equipe, pole, fournisseur
    WHERE year( dateVT ) >2010
    AND fiche.fichechantier =0
    AND fiche.activestats =1
    AND fiche.etat !=0
    AND fiche.etat
    IN ( 3, 4, 8 ) 
    AND utilisateur.idUtilisateur = fiche.idUtilisateur
    AND utilisateur.idEquipe = equipe.idEquipe
    AND equipe.idpole = pole.idpole
    AND fiche.idfournisseur = fournisseur.idfournisseur
    GROUP BY nomPole, nomFournisseur, year( dateVT ) , month( dateVT )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT nomPole AS Pôle, nomFournisseur AS Fournisseur, year( datevalidation ) AS Année, month( dateVT ) AS Mois, count( * ) AS ReprisesNecessaires
    FROM fiche, utilisateur, equipe, pole, fournisseur
    WHERE year( dateVT ) >2010
    AND fiche.fichechantier =0
    AND fiche.activestats =1
    AND fiche.etat !=0
    AND fiche.etat
    IN ( 3, 4 ) 
    AND utilisateur.idUtilisateur = fiche.idUtilisateur
    AND utilisateur.idEquipe = equipe.idEquipe
    AND equipe.idpole = pole.idpole
    AND fiche.idfournisseur = fournisseur.idfournisseur
    GROUP BY nomPole, nomFournisseur, year( dateVT ) , month( dateVT )
    Je fais appel à votre expertise après avoir bataillé longtemps avec des union, des join, sans succès...

    merci d'avance pour votre aide et je reste à disposition pour des compléments d'informations.

    Yo

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 420
    Points : 1 102
    Points
    1 102
    Par défaut
    Bonjour,

    Pour réponde à ce que tu demandes, je rajouterais une colonne vide dans les deux requêtes qui portent une colonne en moins.

    Quelque chose comme ça:


    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    SELECT nomPole AS Pôle, nomFournisseur AS Fournisseur, year( datevalidation ) AS Année, month( dateVT ) AS Mois, count( * ) AS Volume, AVG( taux ) AS CTTVX
    FROM fiche, utilisateur, equipe, pole, fournisseur
    WHERE year( dateVT ) >2010
    AND fiche.fichechantier =0
    AND fiche.activestats =1
    AND fiche.etat !=0
    AND utilisateur.idUtilisateur = fiche.idUtilisateur
    AND utilisateur.idEquipe = equipe.idEquipe
    AND equipe.idpole = pole.idpole
    AND fiche.idfournisseur = fournisseur.idfournisseur
    GROUP BY nomPole, nomFournisseur, year( dateVT ) , month( dateVT )
    union
    SELECT nomPole AS Pôle, nomFournisseur AS Fournisseur, year( datevalidation ) AS Année, month( dateVT ) AS Mois, count( * ) AS Echecs, 0.0
    FROM fiche, utilisateur, equipe, pole, fournisseur
    WHERE year( dateVT ) >2010
    AND fiche.fichechantier =0
    AND fiche.activestats =1
    AND fiche.etat !=0
    AND fiche.etat
    IN ( 3, 4, 8 ) 
    AND utilisateur.idUtilisateur = fiche.idUtilisateur
    AND utilisateur.idEquipe = equipe.idEquipe
    AND equipe.idpole = pole.idpole
    AND fiche.idfournisseur = fournisseur.idfournisseur
    GROUP BY nomPole, nomFournisseur, year( dateVT ) , month( dateVT )
    union
    SELECT nomPole AS Pôle, nomFournisseur AS Fournisseur, year( datevalidation ) AS Année, month( dateVT ) AS Mois, count( * ) AS ReprisesNecessaires, 0.0
    FROM fiche, utilisateur, equipe, pole, fournisseur
    WHERE year( dateVT ) >2010
    AND fiche.fichechantier =0
    AND fiche.activestats =1
    AND fiche.etat !=0
    AND fiche.etat
    IN ( 3, 4 ) 
    AND utilisateur.idUtilisateur = fiche.idUtilisateur
    AND utilisateur.idEquipe = equipe.idEquipe
    AND equipe.idpole = pole.idpole
    AND fiche.idfournisseur = fournisseur.idfournisseur
    GROUP BY nomPole, nomFournisseur, year( dateVT ) , month( dateVT )

    Dans ce cas:
    * le titre des colonnes sera celui de la première requête.
    * Tu obtiendras de une à trois lignes par pôle, fournisseur et mois.

    Personnellement, je mettrais les statistiques sur une ligne en utilisant le case SQL comme ceci:

    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
     
    SELECT nomPole AS Pôle, nomFournisseur AS Fournisseur, year( datevalidation ) AS Année, 
           month( dateVT ) AS Mois, count( * ) AS Volume, AVG( taux ) AS CTTVX , 
           sum( case 
                when  fiche.etat IN ( 3, 4, 8 ) then 1
                else 0 end ) as AS Echecs,
           sum( case 
                when  fiche.etat IN ( 3, 4 ) then 1
                else 0 end ) as AS ReprisesNecessaires
    FROM fiche, utilisateur, equipe, pole, fournisseur
    WHERE year( dateVT ) >2010
    AND fiche.fichechantier =0
    AND fiche.activestats =1
    AND fiche.etat !=0
    AND utilisateur.idUtilisateur = fiche.idUtilisateur
    AND utilisateur.idEquipe = equipe.idEquipe
    AND equipe.idpole = pole.idpole
    AND fiche.idfournisseur = fournisseur.idfournisseur
    GROUP BY nomPole, nomFournisseur, year( dateVT ) , month( dateVT )
    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut merci acaumes
    je viens de tester et c'est exactement ce que je cherchais!

    j'ai toutes les stats sur une ligne par pole, fournisseur, année et mois... extra.

    j'aurais pas trouvé!
    merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2012, 15h39
  2. Réponses: 3
    Dernier message: 26/09/2011, 21h27
  3. Afficher les résultats d'une requête dans un tableau
    Par zoro007 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/08/2010, 09h30
  4. Réponses: 6
    Dernier message: 18/09/2007, 17h10
  5. Réponses: 7
    Dernier message: 21/09/2006, 08h44

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