MySQL Forums
Forum List  »  French

Problème de requette avec max()
Posted by: Benoit DAUVERGNE
Date: December 19, 2008 05:10AM

Bonjour à tous et merci d'avance pour vos réponses.
J'ai un problème pour écrire une requête SQL, j'ai une table des articles acheté et je souhaite écrire une requête qui compare les prix des achats sur une période avec les prix d'achat des mêmes articles un an plus tôt.
Voici ma table :

desc Achat ;
Article varchar(18)
DateRec date
Quantite double
Montant double

Le problème est que il n'y a pas forcement de réception pour le même article pile un an avant, cela m'oblige donc a faire ma requête en 3 temps :
- Je sélectionne les réceptions de la période (année)
- J'y associe la date de réception maximum au moins un an avant
- J'y associe la réception qui correspond à la date un an avant.

Plus précisément :

select T1.Article, Montant, Quantite, PMPCarryOver from
(
SELECT Achat.Article, Daterec, Montant, Quantite, max(DatePuRef) as DatePuRef FROM Achat
inner join
(
SELECT article, daterec as DatePuRef FROM Achat
) DatePuRef on (AchatArticle=DatePuRef.Article and DatePuRef<=DateRec - interval 1 year)
where annee = year(now())
group by Article, Daterec,Montant,Quantite
) t1
inner join
(
select Article, DateRec, Montant/Quantite as PMPCarryOver from Achat
) t2 on (t1.Article = t2.Article and t1.DatePuRef=t2.DateRec);

Cette requête met plus d'une minute a s'exécuter (ma table fait +30000 ligne) et je ne vois pas comment l'optimiser.

A l'AIDE.....

Options: ReplyQuote


Subject
Views
Written By
Posted
Problème de requette avec max()
5743
December 19, 2008 05:10AM
3573
January 07, 2009 11:39AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.