Additions et multiplication dans des requêtes SQL

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - Modifié le 9 mars 2022 à 09:49
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 9 mars 2022 à 17:27
Bonjour à tous,

Dans ma base de données gérée avec phpMyAdmin, j'ai une table 'compositions' qui contient les colonnes suivantes :
id_composition (clé primaire AI)
id_contrat (clé étrangère) // N° du contrat client
id_prestation (clé étrangère) // Identifiant d'une ref prestation
prix // Prix appliqué à cette ref
quantites // Quantité de la ref facturé

1. Existe t-il un moyen de récupérer par id_contrat le montant total de toutes les id_prestation rattachées
à id_contrat et dont le calcul est prix * quantites ?
Exemple résultat recherché :
Contrat n° 123 Total : 527,00
Contrat n° 124 Total : 1824,37
...

Je viens de tester ça qui me revoit un résultat avec des réponses erronées
(quantites_total ne correspondant pas à la réalité) et surtout je ne sais pas comment faire l'opération
prix * quantites

SELECT id_contrat,id_prestation, SUM(quantites) AS quantites_total
FROM compositions
GROUP BY id_prestation



2. Pour simplifier n'ai-je pas intérêt à ajouter une colonne contenant le résultat de prix * quantité car
il est possible que certaines prestations ne soient pas facturées au même prix pour tous les clients (remises par ex) ?
Je n'aurai plus qu'à faire une addition SUM mais comment grouper les id_contrat et grouper les id_prestation dans une même requête ?

3. J'ai pensé aussi faire la multiplication du côté PHP mais comment m'y prendre pour restituer chaque total
de chaque contrat sans boucles infernales ? Un array certainement non ?

Merci d'avance pour votre aide !


Configuration: Linux / Chrome 99.0.4844.51
A voir également:

2 réponses

jordane45 Messages postés 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024 4 703
9 mars 2022 à 10:09
Bonjour,

Question déplacée dans le forum Bases de données .. vu que ça ne concerne pas le code php directement .. mais une requête SQL... ( attention pour tes prochaines questions merci)

Donc..

Tu peux faire des "sous-requêtes".
Par exemple un truc du genre:
SELECT T.id_contrat, 
               T.id_prestation,
               SUM(T.total) as PRIX_TOTAL
FROM (
   SELECT id_contrat,id_prestation, prix, quantite, prix*quantite as total
   FROM compositions
) T
GROUP BY T.id_prestation

1
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
9 mars 2022 à 17:27
Bonjour Jordan,

(Désolé pour le mauvais classement, je cherchais langage 'SQL' et ne trouvant pas j'ai opté pour PHP sans voir
la rubrique bdd)


Tu m'as drôlement aidé car dans mes bouquins on ne parle jamais de sous-requête !
Grâce à ta piste j'ai pu sortir ça :

SELECT T.id_contrat,
       SUM(T.total) AS Total_contrat
FROM
  (SELECT id_contrat,
          prix*quantites AS total
   FROM compositions
   ORDER BY id_contrat) AS T
GROUP BY id_contrat
ORDER BY id_contrat ASC


Qui me sort bien mon numéro de contrat et le total facturé lui correspondant !

Merci beaucoup !
0