|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
Bonjour à tous et d'avance merci à eux qui pourront m'aider.
Je vous explique mon problème : J'ai 2 tables : - 1 table T_Fournissseurs - 1 table T_Factures La table T_Fournisseurs a 1 colonne "nb_factures" Ma question est simple : comment puis-je compter le nombre total de facture pour un fournisseur donné au moment de la validation d'une nouvelle facture dans la table T_Facture ? J'a voulu faire un trigger AFTER sur la table T_Factures Extrait du code : Code :
Je ne comprend pas. Connaissez-vous une meilleur solution ? Merci |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
une recherche sur le forum devrait t'apporter des éléments, un sujet a été l'objet d'un long débat pas plus tard que la semaine dernière
PS : le code du trigger serait nettement plus intéressant avec les balises ad hoc |
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 63 ![]() |
Utilise une procédure ou une fonction (tu pourras utiliser cette derniere dans une requète) qui se chargera
1) de l'insertion dans la table T_FACTURE 2) de la mise à jour du compteur dans la table T_FOURNISSEUR. Sinon, tu peux aussi utiliser une vue sur la table T_FOURNISSEUR de ce type Code :
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
Merci de ta réponse olive-andré mais l'insert se fait via le navigateur WEB.
La vue ne m'apportera rien car la colonne nb_facture est sujet à des calculs à d'autres moments. Merci L'idée de la procédure est intéressante Je vais y travailler |
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Il suffit de gérer tous les cas
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#6 | |
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 63 ![]() |
je ne sais pas ce que tu entends par
Citation:
Code :
UPDATE T_Fournisseur SET nb_facture = nCount WHERE id_fournisseur = :old.id_fournisseur; |
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 63 ![]() |
Désolé, MCM a tiré plus vite que moi .... |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#9 | |||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
Citation:
Je vous tiens au courant |
|||
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Je ne sais plus pourquoi mais il me semble qu’il faut ajouter aussi une contrainte sur la table facture. Mais j’ai du mal à me rappeler pourquoi
|
|
|
00
|
|
|
#11 | |||||
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Citation:
A voir pour les bidouilles à faire pour l'alimenter, on y fera Jamais confiance Et bonjour la dénormalisation. Donc je rejoins olive_andre Code :
Si j'en ai besoin dans un select, pas de pb ! Et le compteur est toujours à jour ! Code :
Code :
SELECT id_fournisseur,nom_fournisseur,nb_factures(cod_four) FROM t_fournisseur
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
|||||
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Oui, mais bonjour le nb de lectures logiques dans certains cas.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#13 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
surtout une fonction dans une requête, c'est pas génial
|
|
|
00
|
|
|
#14 | |||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Citation:
Il est possible que l’application imposé le stockage du cumul. Moi je n’appel pas ça dénormalisation. En plus Tom Kyte ne dit ce que vous dite . Il recommande l’utilisation d’une vue matérialisée avec le paramètre QUERY_REWRITE, mise en place du CBO de telle façon que la requête qui calcul le cumul sur la table de base se exécute en fait sur la vue matérialisé.
|
|||
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
La solution de MCM fonctionne parfaitement
Merci à tous |
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Yeeesss...
![]()
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#17 | |||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Sauf que j’arrive à obtenir ce message
Code :
Citation:
|
|||
|
|
00
|
|
|
#18 |
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 63 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com