BEAUTIFIER du code SQL

Voici une requête SQL qui fonctionne, mais j’aimerai savoir s’il y mieux à faire: plus beau ou plus juste ou plus simple ou plus optimisé; Messieurs les spécialistes SQL en 4D merci de vos retours :pray:

<code 4D>
C_ENTIER LONG($SommeHeures)
$SommeHeures:=0

C_ENTIER LONG($ID)
$ID:=[Devis]IDDevis

Si ($ID#0)
Début SQL
SELECT SUM(HOUR(LGD_Heures.Qte) * 3600 + MINUTE(LGD_Heures.Qte) * 60 + SECOND(LGD_Heures.Qte))
FROM LGD_Heures,LgDevis,Devis
WHERE Devis.IDDevis = :$ID
AND LgDevis.IDDevis = Devis.IDDevis
AND LGD_Heures.IDLgDevis = LgDevis.IDLgDevis
INTO :$SommeHeures;
Fin SQL
Fin de si

C_HEURE($0)
$0:=heure($SommeHeures)

</code 4D>

SELECT SUM(CAST(LGD_Heures.Qte AS INT) / 1000)
Ça devrait le faire.

J’ai noté que le http://forums.4d.com/Post/FR/18376810/1/18376811#18376811CAST dans une requête> n’est franchement pas rapide - tout comme ORDER BY, d’ailleurs. Ramener les données brutes et retraiter en local est souvent plus efficace (en plus ça tombe bien, vu comme je suis mauvais en SQL…)

Il y avait un bug dans ma question: c’est pas des OU mais des ET :mrgreen: :wink:

Je veux un code beau ET optimisé ET efficace, etc… :slight_smile:

Donc, je fais quoi ? je le laisse ainsi ? coup de bol ou je suis trop fort (sans le savoir :oops:) ?

Je pensais qu’il y aurait une jointure plus simple ou possibilité de directement récupérer une somme en heure, mais bon…