|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 2 ![]() |
Mon problème parait simple quand il est ennoncé, mais je tourne en rond depuis pas mal de temps
, et il faut que je trouve une solution... Sous forme simplifiée voici la structure dont je dispose Il n'y a qu'une table FACTURES avec 3 colonnes : NUMFACT, DATEFACT, VENDEUR Je veux obtenir les 5 dernières factures passées par chaque vendeur, et cela en une seule requête Merci d'avance à ceux qui vont se pencher sur mon pb |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Les premiers peuvent aussi être les derniers
|
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Si ta table n'est pas trop ennorme, tu peux passer par les fonctions analytiques:
Code :
|
||
|
|
00
|
|
|
#4 | |
|
Membre éclairé
![]() Inscription : novembre 2002 Messages : 533 ![]() |
Citation:
juste au passage pq fais tu cette remarque sur les fonctions analytiques ? j'ai observé pour ma part des résultats très probants sur des tables relativement importantes (>1M) avec les fonctions analytiques versus GROUP BY+HAVING pour avoir le même résultat. je me souviens même d'un tuto sur ce site de Laly qui fournissait des traces significatives au niveau des I/O. Merci de ton avis
__________________
PpPool |
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Oui, ça sera toujours meilleur qu'un group-by/having. Mais dans ces 2 cas il faut savoir que l'acces à la table sera complet. Dans l'hyposèse ou il y a peu de vendeurs avec des milliers de factures chacun, la requête va se fatiguer pour rien à donner un numéro à chaque facture alors que seules les 5 dernières sont interressante. Dans ce cas là il faudra réfléchir à faire un index sur le couple (VENDEUR/DATEFACT ) avec l'option "DESC" tant qu'a faire, puis faire une requete à base de "order-by desc" et de rownum. Oracle utilisera alors du "COUNT-STOPKEY" ce qui évitera de parcourir toute la table.
|
|
|
00
|
|
|
#6 | |
|
Membre éclairé
![]() Inscription : novembre 2002 Messages : 533 ![]() |
Citation:
je me demandai s'il n'y avait pasautre chose que je ne savais pas sur les fonctions analytiques. On est d'accord. Merci encore de ta réponse
__________________
PpPool |
|
|
|
00
|
|
|
#7 | |||
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 886 ![]() |
Citation:
Code :
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Le principe est beau, mais en matiere de performance c'est une catastrophe, car l'optimiseur n'est pas assez malin pour traduire cette requête en classement/comptage...
![]() a vérifier là aussi... |
|
|
01
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 886 ![]() |
Citation:
Si les résultats confirment l'incantation, soit, et chercher autre chose, mais de grâce, pas d'a priori. Comme disait Henri Poincaré, "L'intuition trouve, le raisonnement prouve". Je rappelle que sur la base de la seule intuition, SQL n'aurait jamais vu le jour. Il a fallu que Don Chamberlin et son équipe construisent le prototype System R et mesurent et remesurent pour arriver à la conclusion surprenante que SQL était plus performant que les SGBD de l'époque (non relationnels et pour cause), cela contre toute attente...
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com