|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Sin KhaneInscription : octobre 2012 Messages : 16 ![]() |
Bonjour ,
Comment je peux Ajouter à une table une colonne calculée correspondant à la différence entre 2 colonnes . je veux dés que j'insert un ligne dans ma table "voyage" le champs "KP" sera calculé automatiquement par la somme de 2 colonne de la même ligne de l'enregistrement Merci pour votre aide |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 635 ![]() |
Bonsoir,
dans une BDD aucune colonne ne doit contenir d'information calculé, si tu doit ressortir des données calculé tu doit le faire soit du coter de l'application soit directement avec une requête SQL qui se chargera de faire le calcul. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Sin KhaneInscription : octobre 2012 Messages : 16 ![]() |
comment je peux le faire directement dans ma base de donné sachant que je travail sous mysql .je ne sais pas comment créée une requête dés l'ajout il faut calculé la somme
Merci pour votre aide |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 635 ![]() |
Tu devrait passer par un trigger qui agira avant l'insertion qui fera le calcul et ajoutera dans ta colonne ce calcul.
|
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Non ! C'est seulement lorsque tu sélectionneras dans la table que tu procèderas au calcul !
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 170 ![]() |
ou faire une vue.
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#7 |
|
Invité de passage
![]() Chef de projet NTIC Inscription : décembre 2012 Messages : 1 ![]() |
Bonjour à tous,
Ca faisait longtemps que je voulais m'inscrire, c'est chose faite, car ce sujet m'intéresse beaucoup. Donc pour répondre à Exia93, CinePhil et SQLpro, j'aimerais vous soumettre un exemple de cas d'utilisation, savoir quelle réponse vous y apporteriez. Imaginons une table produit qui contiendrait, entre autres, un tarif HT et un taux de TVA (variant en fonction, par exemple, du type de produits, mais peu importe). Si je veux lister les produits et afficher leur prix TTC, je devrai calculer le montant TTC à la récupération (en requêtage ou par une vue). Jusque là tout va bien. Maintenant admettons que j'ai besoin de sélectionner des produits dans une certaine fourchette de prix TTC. Ok, je vais requêter sur ma colonne calculée avec un truc du genre where ht+(ht*tva) >= xxx and ht+(ht*tva) <= yyy Mais, si cette table contient plusieurs millions d'enregistrements, et que ces requêtes de sélection de fourchettes sont exécutées des milliers de fois par jour, nous sommes d'accord (je pense ?) que d'un point de vue performance, on risque d'être dans les choux. Voilà, pour ma part, j'ai fait le choix de calculer le montant ttc au niveau applicatif, et le stocker dans une colonne que j'ai indexée. Les puristes m'ont bondi dessus à base de "dénormalisation", "premature optimization is root of all evil", etc. mais n'ont pas été capables de me proposer de solution alternative convenable. Edit : J'avais également pensé à passer par une computed column (Sybase), mais il fallait de toutes façon la linker côté applicatif, donc ça ne résolvait pas le "problème" de dénormalisation. Je suis preneur d'autres solutions, en avez-vous ? Merci |
|
|
00
|
|
|
#8 | |
![]() ![]() |
Je fais une incursion provisoire du côté du processus.
Je ne me vois pas aller sur un site de vente en ligne et commencer par entrer une fourchette de prix sans avoir au préalable sélectionné une catégorie de produits ou alors ce site ne propose qu'une seule catégorie de produits. Dans ce cas, il est fort probable que le taux de TVA sera le même pour toute la catégorie de produits. Citation:
Code :
WHERE ht BETWEEN :fourchette_basse / (1 + (:tva / 100)) AND :fourchette_haute / (1 + (:tva / 100))
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
00
|
|
|
#9 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 170 ![]() |
Citation:
1) effectivement dénormalisation... mais justifiable pour les performances.... 2) bien pire : quelle est la précision de vos calculs ? Le langage utilisé est-il conforme à la norme sur les arrondis et limites des calculs ? Faites vous toujours appel à la même formule ? Passerez vous toujours par la même et unique application ? Qui des performances des aller-retour de lignes pour le calcul de milliers de totaux ??? Citation:
Déjà MySQL comme PHP ne sont pas conforme aux normes de calculs (IEEE 754) et par conséquent leurs résultats de calculs peuvent être aléatoires... http://www.ahristov.com/tutorial/Blo...EE%2Bhell.html A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
00
|
|
|
#10 | |||
![]() ![]() |
Article intéressant. Sa conclusion :
Citation:
Par exemple, pour un prix avec 2 décimales pour les centimes, exécuter plutôt cette requête ? Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||
|
00
|
|
|
#11 | |||
|
Membre expérimenté
![]() Frédéric Inscription : juin 2011 Messages : 442 ![]() |
Citation:
Pour ton souci de TVA associé à une catégorie de produit, comme il n'y a pas 50000 taux de TVA, au lieu de calculer un prix hors taxes on peut surement calculer tous les prix hors taxes possibles : Code :
|
|||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com