Recupèrer les 6 premiers prix de chaque objet

Signaler
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
27
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?
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
27
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 ....
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
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