Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1667 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Faire un update avec sum et qui implique plusieurs tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire un update avec sum et qui implique plusieurs tables

n°2254696
flodu69
Posté le 01-04-2015 à 12:00:10  profilanswer
 

Bonjour,
 
Voici mon problème: je dois clôturer tous les chantiers de la société 377487086 dont la "Date Totalement facturé" date de plus de un an sauf ceux qui comportent des dépenses alors que la facturation est nulle et qu'ils sont indiqués comme facturables.  
 
voici ma requête:
UPDATE CHANTIERS  set ETC_KEYID = 99
where ETC_KEYID in (select c.ETC_KEYID from CHANTIERS  c inner join ETATSCHANTIERS et on c.ETC_KEYID = et.ETC_KEYID
                   
                  left join (select co.CHA_KEYID, SUM(SCH_QUANTITE * SCH_PRIXACHATHT * CPC_COEFFG) TOTALPRIXREVIENT
                  from COMPOSITIONCHANTIER co inner join SAISIESCHANTIERS s on s.CPC_KEYID=co.CPC_KEYID  
                  group by CHA_KEYID) CPCT on CPCT.CHA_KEYID=c.CHA_KEYID
                 
                  left join (select FAC.CHA_KEYID, coalesce(SUM(FAC_MONTANTHT), 0) TOTALFACTURE  
                  from FACTURESCHANTIERS FAC left join FACTURESCLIENTS FCL on FAC.FCL_KEYID = FCL.FCL_KEYID  
                  group by FAC.CHA_KEYID) FACT on FACT.CHA_KEYID=c.CHA_KEYID
                   
where c.SOC_KEYID = 377487086 and CHA_DATETOTALEMENTFACTURE < DATEADD(-1 year to CURRENT_DATE)  
                              and TOTALPRIXREVIENT < 0 and TOTALFACTURE > 0 and CHA_FACTURABLE = 'O' )
 
 
 
Lorsque je lance l'update il s'exécute pendant beaucoup et là s'attend toujours....

mood
Publicité
Posté le 01-04-2015 à 12:00:10  profilanswer
 

n°2260677
Berceker U​nited
PSN : berceker_united
Posté le 18-06-2015 à 17:38:00  profilanswer
 

Dans la requête il y a tout les ingrédients nécessaire pour plomber les performances.
Opération arithmétique dans une fonction d'agregation, group by, sous requête, jointure gauche, IN.
Si en plus il y a pas d'index, c'est le pompom assuré !
Je suis pas étonné.
- Créé des tables temporaire pour séparer tes opérations.
- Regarde les index de tes tables.
- Evite le IN et fait une jointure avec la table temporaire qui va te retourner que le ETC_KEYID déjà calculé en amont.


Message édité par Berceker United le 18-06-2015 à 17:38:18

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Faire un update avec sum et qui implique plusieurs tables

 

Sujets relatifs
Reproduire ligne avec plusieurs Cases d'option/Zone de groupe ET MacroRequête SQL Update dans PHP
messages vérif tables existhtml 5 drag and drop plusieurs fichier
Update, double quotes et simples quotes Débutant BDD en général / liens entre tables
[Access/SQL] Comparaison de tablesA supprimer
[Réglé] [SQL] Update après un selectPlusieurs valeurs possible dans une variable/parametre
Plus de sujets relatifs à : Faire un update avec sum et qui implique plusieurs tables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR