Recupèrer les 6 premiers prix de chaque objet

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 12 nov. 2009 à 19:54
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 13 nov. 2009 à 20:23
Salut les amis,

J'essaye d'écrire une requête un peu particulière, mais j'y arrive pas. Je compte sur vous pour me guider ;)

Voici le genre de requête que j'ai besoin de faire : faire un select du champ "objet" d'une table dont le champ prix fait parti des 6 prix les moins chers pour chaque objet.

Grosso modo, ca donnerait un truc du genre :
SELECT "les six premier"(objet) FROM prixObjet GROUP BY objet ASC

Donc il me faudrait au max 6 lignes PAR objet me donnant (au max) les 6 premiers prix (ou moins s'il y a moins de 6 prix par objet).

Là je sèche pour faire cà, vous auriez une idée ?
______________________________________
DarK Sidious

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 nov. 2009 à 09:50
Salut,

J'ai un peu avancé dans ma requête : j'ai trouvé comment faire, mais c'est bien trop lent !!! Environ 30 minutes pour obtenir le résultat escompté...

VOici ma requête :
SELECT id, cObjet, cSite, cPrix, cDateVente
FROM tPrixObjet AS prixObjet
WHERE prixObjet.id IN
(SELECT TOP 6 id FROM tPrixObjet AS prixObjetOrdonnes WHERE prixObjetOrdonnes.cObjet prixObjet.cObjet AND prixObjetOrdonnes.cSite prixObjet.cSite AND cDateVente IS NULL ORDER BY cPrix ASC);


Si j'enlève le cDateVente IS NULL alors ca va très vite (quasi instantané), mais malheureusement, il faut que je rajoute ce test, et là c'est le drame ! Quelqu'un aurait une idée pour faire plus optimisé ?

Merci d'avance

______________________________________
DarK Sidious
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 nov. 2009 à 19:06
Salut,

Si mets un index ca donne quoi sur la colonne date?
Si tu passes par une vue sur la table tPrixObjet Ca donne quoi?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 nov. 2009 à 19:12
Salut,

Malheureusement le champ est déjà indexé. :(

Par contre, comment tu fais pour avoir une vue sur la table tPrixObjet ? (il s'agit d'une base de données access...)

Merci pour ta réponse
______________________________________
DarK Sidious
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 nov. 2009 à 19:40
Tu fais une requete qui appelle une requete,
il me semble que ca marche

Apres au niveau optimisation Access n'est pas le TOP ;-)

Tu peux apparement crée des vue avec ACCESS avec l'instruction CREATE VIEW ....
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 nov. 2009 à 20:23
Salut,

Oui je sais bien qu'access c'est loin d'être rapide, mais malheureusement j'ai pas le choix :'(

Mais quand même : 30 Minutes pour une requête sur une table qui fait 30 000 enregistrements, c'est énorme ! Surtout qu'elle risque stocker plus de 100 000 enregistrements à terme... Et tout cà pour retourner environ 10 000 enregistrements en retour de requête.

Je vais essayer avec le CREATE VIEW pour voir, merci !
______________________________________
DarK Sidious
0
Rejoignez-nous