Bonjour !

Je me retrouve avec une requête qui prend 14 seconde à mouliner car ya une petite incohérence dans la base.

J'ai 2 tables qui gères des prix qui "bouge" tout le temps comme il suit :
Fourniss_prix et service_prix

Pour avoir les prix d'un fournisseur la requête serait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Select 
date_fourniss_prix,
service_prix.pa_service 
from fourniss_prix 
inner join service_prix 
on fourniss_prix.idfourniss_prix=service_prix.idfourniss_prix
where fourniss_prix.code_fourniss="toto"

Jusque là rien de bien méchant.

Maintenant j'ai 2 autres table fourniss_prix_contrat et service_prix_contrat
don les prix eux sont fixés en début d'année.
Et qui ont exactement la même structure et nombre d'enregistrement que les 2 précédente, ou seul les prix sont différents.

Le principe c'est que les 2 premières tables on des prix qui sont modifiés tout au long de l'année, les 2 autre ont des prix fixé au début de l'année et ne bouge plus.

Mais il n'y a pas de lien logique entre c'est table dite "jumelles"

Les clefs primaires de fourniss_prix et de service_prix ne correspondent pas au clefs primaires de fourniss_prix_contrat et de service_prix contrat.

Le but et d'avoir les prix "dynamique" qui sont inférieur au prix "fixé" en début d'année.

Les seuls donnée correspondante entre les 2 sont les date, le code fournisseur.

Voici la requête qui me sort les résultat non sans mal...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
select 
fourniss_prix.cdfourniss_fourniss_prix,
fourniss_prix_contrat.date_fourniss_prix as "DATE", 
service_prix_contrat.pa_service_prix as "PRIX AVANT BAISSE",
service_prix.pa_service_prix as "PRIX APRES BAISSE"
 
from
 
fourniss_prix 
 
inner join service_prix
on service_prix.idfourniss_prix=fourniss_prix.idfourniss_prix
 
inner join fourniss_prix_contrat 
on fourniss_prix_contrat.date_fourniss_prix=fourniss_prix.date_fourniss_prix
and fourniss_prix.cdfourniss_fourniss_prix=fourniss_prix_contrat.cdfourniss_fourniss_prix
 
inner join service_prix_contrat
on fourniss_prix_contrat.idfourniss_prix=service_prix_contrat.idfourniss_prix
 
 
where
 
fourniss_prix.date_fourniss_prix >"20100520" and fourniss_prix.date_fourniss_prix<"20100620"
 
 
and service_prix.pa_service_prix<service_prix_contrat.pa_service_prix
 
and service_prix.cdclient is null 
 
and fourniss_prix.cdexcursio is null 
 
and service_prix_contrat.pa_service_prix<>0 and service_prix.pa_service_prix<>0 
 
group by 
 
fourniss_prix.date_fourniss_prix,
fourniss_prix_contrat.date_fourniss_prix
 
order by fourniss_prix.date_fourniss_prix
Je vois pas comment je peux améliorer les temps de réponse du-coup...
Si vous avez une petite idée
Merci !