AirChtit Posté(e) le 25 avril 2005 Partager Posté(e) le 25 avril 2005 Bonjour voilà, je suis une turne en SQL et j'ai pas spécialement le temps de chercher, j'ai une application monstrueuse à faire tourner d'ici ce soir et ca c'en est un infime bout donc je peux pas trop passer de temps dessus. En gros, c'est tout simple et bête, je cherche juste à connaitre la valeur de la clé (noSaisie) de la toute dernière ligne d'une table Saisie et j'aimerais ne pas avoir à parcourir toute la table pour éviter d'utiliser trop le serveur qui doit déjà gérer des centaines de requetes à la fois. J'ai bien pensé à quelque chose du genre : Select noSaisie from Saisie order by noSaisie desc and limit 0,1 Je pense que ca doit correspondre à peu près à ce que je cherche même si la syntaxe ici n'est certainement pas exacte. Je sais pas si ca change quelque chose mais je tiens à préciser que je passe par jdbc (java). J'ai bien une solution de rechange mais je pense qu'un select * pompe plus de ressources que le petit exemple du dessus non??? Au pire même si ce n'est pas optimisé, il faudrait déja que ca fonctionne. J'aurais ensuite un expert en SQL pour m'aider mais tant qu'il n'est pas la, je me débrouille seul et quand on doit faire une requete sur laquelle on bloque alors que derrière on a un prog de ouf à produire... Merci par avance pour votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lestat666 Posté(e) le 25 avril 2005 Partager Posté(e) le 25 avril 2005 si c'est de l'oracle derriere : http://oracle.developpez.com/faq/?page=11#rownum Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 25 avril 2005 Partager Posté(e) le 25 avril 2005 Hmm ben si il te faut juste le numéro le plus grand le truc le plus simple c'est : select max(noSaisie) from Saisie et basta. Lien vers le commentaire Partager sur d’autres sites More sharing options...
AirChtit Posté(e) le 25 avril 2005 Auteur Partager Posté(e) le 25 avril 2005 Arf, suis trop con, merci Sygen. Mais lors d'un select max, il parcourt toute la table ou pas? Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 25 avril 2005 Partager Posté(e) le 25 avril 2005 Ben il doit bien le faire une fois mais suivant les dbs, ce qui est utilisé souvent est mis en cache. De toute maniere je vois pas de query plus simple et plus rapide pour ce que tu veux faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nis Posté(e) le 25 avril 2005 Partager Posté(e) le 25 avril 2005 Tiens ? Y'a moyen d'accéder aux 5 derniers facilement ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 25 avril 2005 Partager Posté(e) le 25 avril 2005 Tiens ? Y'a moyen d'accéder aux 5 derniers facilement ? au 5 derniers plus grand ? Ca dépend si ta db supporte les subqueries, (donc pas mysql 4) sinon ben oui c'est pas compliqué. select no from table where no > ((select max(tbl.no) from table as tbl) - 5) ou qqch dans le style, c'est a tester mais ca doit pas etre loin. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nis Posté(e) le 25 avril 2005 Partager Posté(e) le 25 avril 2005 Hmm .. ok merci ... J'essaierai de tester ça plus tard ... Ca peut être intéressant pour une boutique de e-commerce. Par exemple, les X derniers produits ajoutés, ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nis Posté(e) le 19 juillet 2005 Partager Posté(e) le 19 juillet 2005 Je fais un ptit Au sujet des X derniers produits ajoutés ... Avec la méthode que tu m'avais proposée SyGEN, il risque d'y avoir des problèmes si les ID ne se suivent pas par pas de 1. Il peut y avoir des trous entre les ID, et du coup, il peut afficher de 0 à 5 produits. J'ai trouvé quelque chose qui répond mieux au problème, voici le code : // SORTIR LES 5 DERNIERS ID select top 5 * from table order by id desc Pour obtenir les 5 premiers ID : // SORTIR LES 5 PREMIERS ID select top 5 * from table Ca fonctionne avec Access ... Pour une base mySQL il y a la "fonction" LIMIT apparemment. @+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.