|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : mai 2007 Messages : 49 ![]() |
Bonjour à tous,
J'ai une question sur la mise à jour des tables J'ai une table LISTE_COUT_REEL en BDD qui liste pour un projet la liste des coûts associés. Je dois mettre à jour une autre table COUT_REEL reprenant pour chaque projet le total des coûts Voici ce que j'ai dans la 1ère table : Projet Qté PU CD1 1 100 CD1 15 45 CD1 2 0.5 CD2 20 5 Dans la 2nd table pour le moment j'ai : Projet PR CD1 CD2 Le résultat attendu est Projet PR CD1 776 CD2 100 J'ai déjà créé une fonction me permettant de sortir un fichier agrégat à partir de ma table LISTE_COUT_REEL. Ma question est de savoir syntaxiquement, comment créer une procédure me permettant de mettre à jour ma table COUT_REEL à partir du résultat de la fonction. Merci |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Christian BrossaultAdministrateur de base de données Inscription : avril 2006 Messages : 52 ![]() |
Bonjour,
Est-ce que vous pouvez dans une procédure faire votre update, comme : Code :
Christian |
||
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : mai 2007 Messages : 49 ![]() |
Je ne sais pas si je me suis bien exprimée.
En fait, je mon objectif n'est pas de sortir un fichier via une procédure mais de mettre à jour une table en BDD à partir d'une fonction |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Christian BrossaultAdministrateur de base de données Inscription : avril 2006 Messages : 52 ![]() |
Je vous proposais d'utiliser plutôt une procédure stockée pour faire votre update.
Mais si vous devez impérativement utiliser une fonction, il existe les Table-valued-functions qui peuvent vous permettre de faire cela : http://msdn.microsoft.com/en-us/library/ms191165.aspx |
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : mai 2007 Messages : 49 ![]() |
Ok, je n'avais pas bien compris.
Donc en fait, je peux utiliser une procédure qui calcule mes agrégats et à la fin de ma procédure, au lieu de faire un select pour sortir mes résultats, je fais un update? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
En fait vous pouvez même directement faire un UPDATE qui met a jour en même temps qu'il calcul le total des couts. Mais vous pouvez surement faire mieux : vous pouvez créer une vue pour remplacer votre 2eme table à partir de votre requete qui effectue les calculs. Vous pourrez ensuite indexer cette vue afin d'améliorer les performances. En faisant ainsi, vous n'aurez plus besoin de vous soucier de la mise a jour de votre deuxième table, elle sera faite automatiquement, en temps réel a chaque mise a jour de a première table. En l'occurrence, bien que n'ayant pas beaucoup d'info sur votre BDD, je pense qu'une vue serait beaucoup plus appropriée. |
|
|
00
|
|
|
#7 | ||||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 665 ![]() |
Bonjour,
La requête pourrait être : Code :
Cependant l'idée de la vue indexée est excellente, notamment parce que les vues indexées sont excellentes pour les calculs d'agrégats. Mais attention néanmoins à son coup de maintenance si la table subit de nombreuses modifications. Suivant vos besoins, vous n'aurez peut-être besoin que d'interroger la vue, sans avoir besoin de l'indexer. Il ne me semble pas nécessaire de conserver la table COUT_REEL. Voici donc pour la vue : Code :
Code :
Avec la seconde vue, comme l'a écrit aieeeuuuuu, le calcul est effectué en arrière plan par le moteur de bases de données @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||||
|
00
|
|
|
#8 | ||
![]() ![]() ![]() |
Plus simple est de faire :
Code :
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
||
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : mai 2007 Messages : 49 ![]() |
Merci à tous pour votre aide
Je vais donc passer par une procédure stockées avec UPDATE intégré merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com