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 :

Problème avec SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    gzagazg
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : gzagazg

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Problème avec SQL
    bon j'ai rencontré un petit problème quand je voulais faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    col1| typ | val
    1    |a     |5
    1    |b     |6
    1    |c     |3
    2    |a     |2
    2    |b     |5
    3    |a     |6
    3    |b     |2
    4    |a     |6
    je veux faire une colonne pour le type a et une pour le type b
    pour avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    col1|typ a|typ b
    1    |5     |6
    2    |2     |5
    3    |6     |2
    4    |6     |NULL
    la situation réelle et comme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT mdl_user.firstname, mdl_user.lastname, mdl_course.Fullname, mdl_scorm_scoes.title, mdl_scorm_scoes_track.element, mdl_scorm_scoes_track.value FROM mdl_scorm_scoes_track
    INNER JOIN mdl_user ON mdl_scorm_scoes_track.userid=mdl_user.id
    INNER JOIN mdl_scorm ON mdl_scorm_scoes_track.scormid=mdl_scorm.id
    INNER JOIN mdl_course ON mdl_scorm.course=mdl_course.id
    INNER JOIN mdl_scorm_scoes ON mdl_scorm_scoes_track.scoid=mdl_scorm_scoes.id
    WHERE (mdl_scorm_scoes_track.element='cmi.core.total_time') 
    OR (mdl_scorm_scoes_track.element='cmi.core.score.raw')
    qui donne le type de valeur (temp ou score) dans element et sa valeur dans value. ce que j'aimerais faire et comme suivant

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 69
    Points
    69
    Par défaut
    Bonjour,


    Vous cherchez à réaliser un PIVOT.

    Je peux vous proposer cette solution :
    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
     
    SELECT
           mu.firstname
         , mu.lastname
         , mc.Fullname
         , mss.title
         , SUM(CASE WHEN msst.element ='cmi.core.total_time'
                    THEN msst.value END
              )                                            Time
         , SUM(CASE WHEN msst.element ='cmi.core.score.raw'
                    THEN msst.value END
              )                                            Score
     FROM mdl_scorm_scoes_track      msst
          INNER JOIN mdl_user        mu  ON mu.id   = msst.userid 
          INNER JOIN mdl_scorm       ms  ON ms.id   = msst.scormid
                INNER JOIN mdl_course      mc  ON mc.id   = ms.course
          INNER JOIN mdl_scorm_scoes mss ON mss.id  = msst.scoid
    WHERE msst.element='cmi.core.total_time'
       OR msst.element='cmi.core.score.raw'
    GROUP BY
           mu.firstname
         , mu.lastname
         , mc.Fullname
         , mss.title

    Cdlt,
    OD

  3. #3
    Candidat au Club
    Homme Profil pro
    gzagazg
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : gzagazg

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci, mais le problem persiste, il me renvoi le score mais des nums bizare dans Time, qui varie entre 1 et 4 :/ .

  4. #4
    Candidat au Club
    Homme Profil pro
    gzagazg
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : gzagazg

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Etrange, quand j'enleve le SUM pour le temps , il s'affiche normal.Mais ca me donne pas des info juste, il me renvoi des score pour des temps NULL, qui est impossible!
    je pense le probleme est comme suivant:

    time= 00:05:43 score =0 id=64
    time=NULL score=56 id=64

    SUM de score envoi 56+0=56 qui est juste.
    mais 00:05:43 + NULL = ????
    Non?

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      SELECT mu.firstname, mu.lastname, mc.Fullname, mss.title,
             MAX(CASE msst.element WHEN 'cmi.core.total_time' THEN msst.value END) as Time,
             MAX(CASE msst.element WHEN 'cmi.core.score.raw'  THEN msst.value END) as Score
        FROM mdl_scorm_scoes_track      msst
             INNER JOIN mdl_user        mu  ON mu.id   = msst.userid 
             INNER JOIN mdl_scorm       ms  ON ms.id   = msst.scormid
             INNER JOIN mdl_course      mc  ON mc.id   = ms.course
             INNER JOIN mdl_scorm_scoes mss ON mss.id  = msst.scoid
       WHERE msst.element IN ('cmi.core.total_time', 'cmi.core.score.raw')
    GROUP BY mu.firstname, mu.lastname, mc.Fullname, mss.title;

  6. #6
    Candidat au Club
    Homme Profil pro
    gzagazg
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : gzagazg

    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    ca marche =))
    Merci infiniment

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2007, 16h43
  2. problème avec sql designer
    Par artotal dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2006, 16h57
  3. Problèm avec SQL*LOADER
    Par logicave dans le forum Oracle
    Réponses: 2
    Dernier message: 14/07/2006, 17h55
  4. Quelques problèmes avec SQL SERVEUR (LIKE et caractères)
    Par poussinphp dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/09/2005, 09h43
  5. (jsp) problème avec sql qui contient la date
    Par future dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 31/08/2005, 16h18

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