Problème avec une requête sql.....

Résolu
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 12 déc. 2005 à 16:52
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 22 avril 2006 à 11:37
Bonjour à tous,



En faite j'ai une table Personne :



ID | GROUPE_ID | ORDRE



et dessus je fais une requête :



SELECT ID FROM PERSONNE WHERE....... etc.....



donc j'obtiens plusieurs ligne du coup :



ID | GROUPE_ID | ORDRE

1 1
1

2 2
2

3 3
3



Ce que je voudrais en faite c'est dans ma requête précedente inclure qq
chose qui ferais en sorte que ma requête me retourne uniquement la
ligne qui à le numero "ORDRE' le plus grand, ici 3, donc id = 3 au lieu
qu'elle me retourne plusieurs lignes... donc ca me ferais :



ID | GROUPE_ID | ORDRE

3 3
3



Enfin comme je selectionne que ID dans ma requete ca ferais plutot :



ID |



3



A votre bon coeur....

6 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
12 déc. 2005 à 21:41
Salut,

Pour faire simple
mais il y a plus compliqué

select top 1 ID order by ORDRE DESC

On trie dans le sens inverse et on prend la premeire ligne ;-)

Qui dis mieux ;_)

Et voila
3
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
13 déc. 2005 à 10:35
salut
sinon pour faire un peu moins simple, mais qui ne retourne qu'une seule ligne et qui est pas encore trop compliqué (par contre c'est pas le top au niveau performance mais bon...) :

SELECT * FROM PERSONNE WHERE ... AND ORDRE = (SELECT MAX(ORDRE) FROM PRESONNE WHERE...)

ou dans ta clause where tu met deux fois la meme chose
3
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
13 déc. 2005 à 10:38
enfin ca retourne qu'une seule ligne si bien sur il n'y a pas deux fois le meme ordre pour un ID donné.

mais c'etait par pur envie de me tordre l'esprit car la soluce de nhervagault me plait bien aussi
3
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
13 déc. 2005 à 15:30
Merci de vos réponse je vais surement utiliser une de vos méthode, j'avais fais comme ca avant et apparement ca a l'air de marcher mais c'est pas sur qu'en pensez vous :

String * requete = S"SELECT CHAINE_VALIDATEUR.VALIDATEUR_ID, MAX(CHAINE_VALIDATEUR.ORDRE) FROM CHAINE_VALIDATEUR,AUTORISATION_GROUPE "
S"WHERE CHAINE_VALIDATEUR.VALIDATEUR_ID = AUTORISATION_GROUPE.VALIDATEUR_ID "
S"AND AUTORISATION_GROUPE.AUTORISER = 1 "
S"AND AUTORISATION_GROUPE.GROUPE_ID = @groupe_sqlserver_id "
S"AND CHAINE_VALIDATEUR.ORDRE < @ordre_de_la_chaine "
S"GROUP BY CHAINE_VALIDATEUR.VALIDATEUR_ID " ;

c'est le MAX(CHAINE_VALIDATEUR.ORDRE) donc je suis pas sûr et le GROUP BY aussi...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nadegeva Messages postés 5 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 22 avril 2006
22 avril 2006 à 01:33
Bonjour
ça c'est plus simple non??
SELECT * FROM personne order by ID DESC Limit 1
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
22 avril 2006 à 11:37
Salut,

LIMIT n'est pas supporté par SQL SERVER.
Apres tout dépend de la base de données.
0
Rejoignez-nous