Bonjour,
J'ai besoin d'aide pour une requête SQL (SQL SERVER 2005). Elle sera utilisée dans une procédure stockée.
J'ai trois tables. Une pour des tests, une pour les titres des paramètres utilisateurs, et une table associative entre les deux pour les valeurs des paramètres utilisateurs. Ces paramètres ne sont pas liés à un type de test. Ils peuvent changer d'un test à l'autre, de même que les valeurs des paramètres utilisateurs. (Voir schéma ci-joint)
Un titre utilisateur est caractérisé par sa position (1-9).
J'aimerais, en fonction de plusieurs ID de tests récupérer tous les couples "Titre - Valeur" uniques en fonction de la position et de ce couple. Si pour deux tests, le couple "Titre - valeur" change, je ne le veux pas.
Voici une première requête, mais ma condition d'unicité n'est pas respectée :
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT UserParameterTitle.Title, UserParameterValue.Value, UserParameterTitle.Position FROM Test INNER JOIN UserParameterValue ON Test.Id = UserParameterValue.Test_Id INNER JOIN UserParameterTitle ON UserParameterValue.UserParameterTitle_Id = UserParameterTitle.Id WHERE (Test.Id=860 OR Test.Id=845) GROUP BY UserParameterTitle.Title, UserParameterValue.Value, UserParameterTitle.Position ORDER BY UserParameterTitle.Position
Dans ce cas précis, je n'aimerais que les couples "Titre - Valeur" qui se trouvent en position 4, 5, 6, 7, 8 et 9.
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 Title Value Position ----------------------------------------------------------- CLA CLA 1 Titre utilisateur 1 - 1 Titre utilisateur 2 - 2 Utilisateur Julien 2 Test UserParam1 3 Titre utilisateur 3 - 3 Titre utilisateur 4 - 4 Titre utilisateur 5 - 5 Titre utilisateur 6 - 6 Titre utilisateur 7 - 7 Titre utilisateur 8 - 8 Titre utilisateur 9 - 9
On peut très bien imaginer devoir faire des itérations dans une procédure sotckée si nécessaire...
Merci de votre aide !
Partager