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 :

Analyse croisée de donnée


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut Analyse croisée de donnée
    Bonjour tout le monde.
    Pour le titre, je ne suis pas du tout sûre que le truc que je veux faire s'appelle une analyse croisée.
    Alors voilà ce que je veux faire :
    Supposons une table ayant une telle structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    +----+------------+--------+
    | ID | typeMesure | valeur |
    +----+------------+--------+
    |  1 | Températur | 22,5   |
    |  1 | Pression   | 700    |
    |  2 | Températur | 17,5   |
    |  2 | Pression   | 650    |
    +----+----------+--------+
    La clé primaire est une concaténation de "ID" et de "typeMesure".
    Il faut que je puisse arrivé à ce type de résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    +----+------------+------------+
    | ID | Températur | Pression   |
    +----+------------+------------+
    |  1 |    22,5    |     700    |
    |  2 |    17,5    |     650    |
    +----+------------+------------+
    Le SGBD utilisé est Access, mais l'affichage ce fait dans une application VB .NET (Datagrid & Co).
    Existe il une manière de résoudre le problème en SQL? Ou faut-il faire une requête pour l'affichage de chaque Case?
    Merci à vous.

  2. #2
    Membre éprouvé
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Par défaut
    Bonjour

    Existe il une manière de résoudre le problème en SQL?
    Oui, c'est facile à faire avec Access.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM MAX(valeur)
    SELECT id
    FROM laTable
    GROUP BY id
    PIVOT typeMesure;
    Access utilise une syntaxe exotique qquefois assez éloignée de la norme, je te conseille de poster tes prochaines questions dans le forum
    Requêtes et SQL ACCESS

  3. #3
    Membre chevronné Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Par défaut
    Oui.

    Tu dois faire une jointure entre ta table et elle même, basée sur l'ID afin d'afficher les données de Température pour la première et de Pression pour la seconde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
      T1.Id, 
      T1.Valeur AS Temperature, 
      T2.Valeur AS Pression
    FROM MaTable T1
      INNER JOIN MaTable T2 ON T2.Id = T1.Id AND T2.TypeMesure = 'Pression'
    WHERE T1.TypeMesure = 'Températur'
    Ce code devrait fonctionner. Par contre il part du principe qu'il y a toujours une mesure de Température et une mesure de Pression pour chaque Id. Si ce n'est pas le cas alors cela devient un peu plus compliqué.

    S'il n'y a pas toujours de mesure de Pression mais toujours une mesure de Température alors le INNER JOIN devient un LEFT JOIN.

    S'il n'y a pas toujours de mesure de Température mais toujours une mesure de Pression alors le INNER JOIN devient un RIGTH JOIN.

    Si les deux cas précédents sont valides alors il faut faire une UNION entre les deux et dédoubloner le résultat si nécessaire.

    Cordialement

  4. #4
    Membre confirmé Avatar de misterdi
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Citation Envoyé par elbj Voir le message
    Si les deux cas précédents sont valides alors il faut faire une UNION entre les deux et dédoubloner le résultat si nécessaire.
    Ou utiliser un OUTER JOIN

  5. #5
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Merci à vous, sujet résolue

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2014, 22h13
  2. Réponses: 7
    Dernier message: 04/09/2011, 18h14
  3. Prob Req Analyse Croisée
    Par martonpylon12 dans le forum Access
    Réponses: 6
    Dernier message: 18/06/2005, 15h28
  4. Analyse croisée ?
    Par Maludi dans le forum Access
    Réponses: 3
    Dernier message: 15/06/2005, 12h43
  5. [ADO] analyse croisée dans un DBGRID
    Par cdlr27 dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/12/2004, 10h57

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