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 :

Requête SQL particulière dans procédure stockée


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut Requête SQL particulière dans procédure stockée
    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 :

    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
    Résultat :
    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
    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.

    On peut très bien imaginer devoir faire des itérations dans une procédure sotckée si nécessaire...

    Merci de votre aide !
    Images attachées Images attachées  

  2. #2
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut
    Je me suis rendu compte que cette requête était bien compliquée ! Je me suis arrangé différemment, avec les curseurs dans une procédure stockée. Maintenant, il me reste à passer une liste ou un tableau d'id de test à ma procédure stockée...

  3. #3
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut
    Et voilà ! J'espère que la solution profitera à quelqu'un...

    http://www.developpez.net/forums/sho...d.php?t=538758

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Et ce genre de requete ne conviendrait pas a votre probleme ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM matable a 
    WHERE NOT EXISTS  (
          SELECT 1 FROM matable b 
          WHERE a.Position=b.Position AND a.Value<>b.Value)
    A adaper bien sur

    Bon courage

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

Discussions similaires

  1. [WD19] Exécuter une requête stockée dans procédure stockée
    Par clocktime dans le forum WinDev
    Réponses: 0
    Dernier message: 09/04/2014, 08h51
  2. Réponses: 1
    Dernier message: 07/02/2012, 12h30
  3. Requête INSERT dans procédure stockée
    Par ordiminnie dans le forum Développement
    Réponses: 7
    Dernier message: 30/10/2008, 22h17
  4. [PL/SQL] INSERT dans procédure stockées
    Par etoileDesNeiges dans le forum SQL
    Réponses: 5
    Dernier message: 12/12/2006, 14h18
  5. SQL dans Procédure stockée
    Par julure dans le forum Oracle
    Réponses: 13
    Dernier message: 02/11/2004, 16h57

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