Somme des prix HT * Quantité, Erreur de calcul
Résolu/Fermé
A voir également:
- Somme des prix HT * Quantité, Erreur de calcul
- Erreur 0x80070643 - Accueil - Windows
- Formule somme excel colonne - Guide
- Calcul moyenne excel - Guide
- Somme si couleur - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
4 réponses
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
Ambassadeur
1 559
Modifié le 24 mars 2017 à 20:39
Modifié le 24 mars 2017 à 20:39
bonsoir, pourrais-tu nous en dire plus sur le contenu de tes tables? quelles sont le colonnes et quelles sont les clés uniques?
ainsi que sur le type d'erreur : "les résultats des calculs sont erronés" : nuls, trop petits, trop grands?
ainsi que sur le type d'erreur : "les résultats des calculs sont erronés" : nuls, trop petits, trop grands?
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
Ambassadeur
1 559
25 mars 2017 à 08:58
25 mars 2017 à 08:58
et la réponse à ceci te semble correcte?
SELECT COMMANDEID,PRODUITID, COUTE.PRIXHT*CONTIENT.QTE AS MHT, (COUTE.PRIXHT*CONTIENT.QTE)*(1+TAUX) AS MTTC FROM TVA, PRODUIT, COUTE, CONTIENT WHERE TVA.TAUXID=PRODUIT.TAUXID AND PRODUIT.PRODUITID=COUTE.PRODUITID AND PRODUIT.PRODUITID=CONTIENT.PRODUITID
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
1 559
>
Utilisateur anonyme
25 mars 2017 à 20:55
25 mars 2017 à 20:55
La question est destinée à Simslim, je pense qu'il est le seul à pouvoir exécuter cette requête et analyser si la réponse lui semble correcte.
Je pense que la table COUTE a les champs PRODUITID et PRIXHT, et donne donc le coût de chaque produit, tandis que la table CONTIENT a les champs COMMANDEID, PRODUITID et QTE, et donne donc le contenu de chaque commande, le nombre de chacun des produits inclus dans chaque commande.
Je respecte ton choix d'adhérer au dogme concernant l'écriture des jointures hors WHERE.
Je pense que la table COUTE a les champs PRODUITID et PRIXHT, et donne donc le coût de chaque produit, tandis que la table CONTIENT a les champs COMMANDEID, PRODUITID et QTE, et donne donc le contenu de chaque commande, le nombre de chacun des produits inclus dans chaque commande.
Je respecte ton choix d'adhérer au dogme concernant l'écriture des jointures hors WHERE.
Utilisateur anonyme
>
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
Modifié le 26 mars 2017 à 00:29
Modifié le 26 mars 2017 à 00:29
OK,
mais je ne pige toujours pas l'intérêt d'avoir une table COUTE (drôle de nom) et une table CONTIENT...
Bref, lui seul répondra (s'il le souhaite, et il n'est pas pressé à 1ère vue).
Pour le reste, ce n'est pas un dogme, mais une réalité d'écriture SQL et de performances. Je crois que cela date des années 90, à l'époque où je bossais sur du COBOL sur des sys IBM (40m² de "mini ordinateurs) !!!!!
Le JOIN sert à indiquer les relations, le WHERE les conditions.
Je ne fais plus trop d'Access depuis 2 ans, mais du SQL Server. Et crois moi que niveau perfs, sur une base de 2To (Tera pas Giga), il n'y a pas photo. C'est juste une habitude à prendre.
Après, une base de 2To Access, je n'ai jamais vu ! et heureusement d'ailleurs...
A+
mais je ne pige toujours pas l'intérêt d'avoir une table COUTE (drôle de nom) et une table CONTIENT...
Bref, lui seul répondra (s'il le souhaite, et il n'est pas pressé à 1ère vue).
Pour le reste, ce n'est pas un dogme, mais une réalité d'écriture SQL et de performances. Je crois que cela date des années 90, à l'époque où je bossais sur du COBOL sur des sys IBM (40m² de "mini ordinateurs) !!!!!
Le JOIN sert à indiquer les relations, le WHERE les conditions.
Je ne fais plus trop d'Access depuis 2 ans, mais du SQL Server. Et crois moi que niveau perfs, sur une base de 2To (Tera pas Giga), il n'y a pas photo. C'est juste une habitude à prendre.
Après, une base de 2To Access, je n'ai jamais vu ! et heureusement d'ailleurs...
A+
yg_be
Messages postés
23430
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2025
1 559
>
Utilisateur anonyme
26 mars 2017 à 11:19
26 mars 2017 à 11:19
Il me semble en effet plus logique, au lieu des quatre tables TVA, PRODUIT, COUTE et CONTIENT, d'avoir trois tables: TVA, PRODUIT et COMMANDE.
COMMANDE : COMMANDEID, PRODUITID, QTE
PRODUIT: PRODUITID, TAUXID, PRIXHT
TVA : TAUXID, TAUX
La requête serait alors (attention, formulation hérétique!):
COMMANDE : COMMANDEID, PRODUITID, QTE
PRODUIT: PRODUITID, TAUXID, PRIXHT
TVA : TAUXID, TAUX
La requête serait alors (attention, formulation hérétique!):
SELECT COMMANDEID,SUM (PRIXHT*QTE) AS MHT, SUM ((PRIXHT*QTE)*(1+TAUX)) AS MTTC FROM TVA, PRODUIT, COMMANDE WHERE TVA.TAUXID=PRODUIT.TAUXID AND PRODUIT.PRODUITID=COMMANDE.PRODUITID GROUP BY COMMANDEID
Bonjour à tous et merci pour votre mobilisation!
En effet, yg_be tu avais bien compris la structure des tables. Je suis désolé de vous avoir fait perdre votre temps, car je viens de trouver la solution, le probleme venait du fait que la table COUTE contenait un champ "catalogue" en plus des champs PRIXHT et PRODUITID. Il fallait que je mette une condition sur le champ "catalogue".
HDU, on m'a appris qu'il était possible de lier les tables de deux façon, j'utilise le where car étant débutant cela me parait plus facile, mais les deux fonctionnent très bien, et je ne vois pas vraiment la différence.
Enfin, cette requête m'a été donné à faire dans le cadre d'un TP de master. C'est pour cela que les noms des tables sont surprenants, et c'est aussi pour ca que ces quatre tables sont présentes au lieu des trois normalement nécessaire: la structure initiale des tables nous a été donnée ainsi. j'ai d'ailleurs une table COMMANDE ou apparaissent directement les montants recherchés, mais la consigne interdisait de passer par ce champ.
Je vous présente un nouvelle fois mes excuses d'avoir fait appel à vos savoirs sans vous avoir donné toutes les cartes en mains, et vous remerci pour votre réactivité!
Résolu, merci, A bientôt!
En effet, yg_be tu avais bien compris la structure des tables. Je suis désolé de vous avoir fait perdre votre temps, car je viens de trouver la solution, le probleme venait du fait que la table COUTE contenait un champ "catalogue" en plus des champs PRIXHT et PRODUITID. Il fallait que je mette une condition sur le champ "catalogue".
HDU, on m'a appris qu'il était possible de lier les tables de deux façon, j'utilise le where car étant débutant cela me parait plus facile, mais les deux fonctionnent très bien, et je ne vois pas vraiment la différence.
Enfin, cette requête m'a été donné à faire dans le cadre d'un TP de master. C'est pour cela que les noms des tables sont surprenants, et c'est aussi pour ca que ces quatre tables sont présentes au lieu des trois normalement nécessaire: la structure initiale des tables nous a été donnée ainsi. j'ai d'ailleurs une table COMMANDE ou apparaissent directement les montants recherchés, mais la consigne interdisait de passer par ce champ.
Je vous présente un nouvelle fois mes excuses d'avoir fait appel à vos savoirs sans vous avoir donné toutes les cartes en mains, et vous remerci pour votre réactivité!
Résolu, merci, A bientôt!