Requête, demande d'avis

Résolu
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 27 févr. 2006 à 12:38
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 28 févr. 2006 à 10:20
Bonjour à tous,

J'ai un problème avec une requête sur lequelle j'ai trouver une solution mais je voudrais avoir votre avis pour être sur que ma solution tienne le coup.

J'ai une table CHAINE_VALIDATEUR_CAS1
avec :

validateur_id | ordre | groupe_id | autoriser
1 1 2 1
2 2 2 1
3 3 2 1

Ce que je voudrais en faite c'est pour un groupe donnée et pour un validateur donnée trouver le premier validateur qui possède le groupe en question et qui est autorisé , je sais pas si c'est très clair mais par exemple : si je prend ma table plus haut j'ai :
validateur_id 3 ordre 3 validateur_id 2 ordre 2validateur_id <gras>1 ordre</gras> 1

par exemple si je prend le validateur 3 et le groupe 2 je voudrais avoir le premier validateur qui possède ce groupe "autoriser = 1" mais qui est anterieur au niveau de l'ordre : exemple

validateur_id | ordre | groupe_id | autoriser

1 1 2 1

2 2 2 1

3 3 2 1
si je prend le validateur_id 3 pour groupe_id 2 alors je dois trouver comme résultat validateur_id = 2 car le validateur_id = 2 à l'ordre 2 donc juste en dessous de l'ordre 3 et le groupe 2 autoriser

si je prend ceci :

validateur_id | ordre | groupe_id | autoriser

1 1 2 1

2 2 2 0

3 3 2 1
alors pour le validateur_id 3 pour groupe_id 2 je dois trouver comme resultat validateur_id = 1.

Voila en faite la problématique est pas tellement compliqué,

Voici ma requête qui me permet de faire ceci :




String * requete = S"SELECT TOP 1
CHAINE_VALIDATEUR_CAS1.VALIDATEUR_ID FROM
CHAINE_VALIDATEUR_CAS1"





S"WHERE AUTORISATION_GROUPE.AUTORISER = 1 "


S"AND AUTORISATION_GROUPE.GROUPE_ID = 2 "// id du groupe



S"AND CHAINE_VALIDATEUR_CAS1.ORDRE < 3 " // ICI ON PREND L'ORDRE DU
VALIDATEUR pour le validateur 3 c'est ordre 3


S"ORDER BY CHAINE_VALIDATEUR_CAS1.ORDRE DESC" ;

Qu'en pensez vous ?

Par avance, merci.

2 réponses

Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
28 févr. 2006 à 10:05
Bonjour,

Ca marche, non ? Que veux-tu que l'on valide ?
Fis un essai sur plusieurs possibilités, mais normalement, en construisant ta requête tu dois être sur de faire ce qu'il faut.

Je ferais ca moi :
SELECT MAX(VALIDATEUR_ID)
FROM CHAINE_VALIDATEUR_CAS1
WHERE AUTORISER = 1
AND GROUPE_ID = (id du groupe)
AND ORDRE < (ordre du validateur)

Ca evite un order by...
3
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
28 févr. 2006 à 10:20
ok, merci
0
Rejoignez-nous