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... :
J'espère que je n'ai pas parlé chinois... Merci de votre aide !
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
Stéphane
Partager