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 :

SELECT colonnes dynamiques


Sujet :

Langage SQL

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut SELECT colonnes dynamiques
    Bonjour,

    J'ai une base de données SQL SERVER 2005 Express permettant de stocker différents tests de mesure. La table test est le point central. De là découle une table ResultValue puis ResultTitle. Je suis obligé de faire de cette manière car les titres des résultats peuvent changer d'un type de test à un autre. Pour imager, j'ai joint un extrait du schéma. La table ResultValue est donc une table associative.

    Au final, j'aimerais une grille triée par type de test contenant : les champs de la table test (commun à tous les types de test), puis des colonnes propres aux résultats (variables en fonction des types de test). Le nom de la colonne étant ResultTitle.Title, et pour chaque test, la valeur de la table associative ResultValue.Value. Je trierais évidement par type de test afin que les champs ResultTitle.Title soient les mêmes pour toutes les lignes de la grille.

    Est-il possible de faire cela dans une procédure stockée? Ou je suis obligé de faire des itérations depuis c# pour remplir ma grille? Je préférerais nettement la première solution pour des questions d'optimisation.

    Voici les requêtes que j'ai faites. Maintenant, j'aimerais combiner le tout... :
    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
     
    --Sélection des données communes à tous les types de test
    SELECT     Test.*
    FROM         Test
    WHERE Test.KindTest_Id = 3
     
    --Colonnes à ajouter à la grille
    SELECT ResultTitle.Id, ResultTitle.Title
    FROM         Test INNER JOIN
                          ResultValue ON Test.Id = ResultValue.Test_Id INNER JOIN
                          ResultTitle ON ResultValue.ResultTitle_Id = ResultTitle.Id
    WHERE Test.KindTest_Id = 3
    GROUP BY ResultTitle.Title, ResultTitle.Position, ResultTitle.Id
    ORDER BY ResultTitle.Position ASC
     
    --Valeurs des colonnes pour le test 12
    SELECT ResultValue.Value
    FROM         Test INNER JOIN
                          ResultValue ON Test.Id = ResultValue.Test_Id INNER JOIN
                          ResultTitle ON ResultValue.ResultTitle_Id = ResultTitle.Id
    WHERE Test.Id=12
    ORDER BY ResultTitle.Position ASC
    J'espère que je n'ai pas parlé chinois... Merci de votre aide !

    Stéphane
    Images attachées Images attachées  

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

Discussions similaires

  1. [SQLServer] ajout de colonne dynamique
    Par pi05 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/05/2006, 11h14
  2. [<select name=...>]Dynamique depuis MySQL
    Par Jean_Benoit dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/05/2006, 11h50
  3. Etat : colonnes dynamiques
    Par chris76 dans le forum Access
    Réponses: 8
    Dernier message: 26/09/2005, 16h56
  4. Colonnes dynamiques dans Rave report
    Par omarkrachni dans le forum Rave
    Réponses: 1
    Dernier message: 10/05/2005, 18h33
  5. libelles et entêtes de colonnes dynamiques
    Par valfredr dans le forum XMLRAD
    Réponses: 7
    Dernier message: 09/03/2004, 21h40

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