J'ai 3 tables Site, Prix et PrixMonth. Le site a beaucoup de prix (joint sur siteId). PriceMonth contient une date qui est recherchée par Price (rejoint sur PriceMonth). L'idée est que les enregistrements de prix sont créés lorsqu'un site est créé comme espace réservé.SQL Update - Existe-t-il un moyen plus élégant et plus efficace de le faire?
Lorsqu'un utilisateur clique sur une ligne de prix dans une vue - je dois mettre à jour les prix pour le reste de l'année seulement et à partir de ce mois seulement.
J'ai écrit du code pour une procédure stockée qui fonctionne. Veuillez ignorer les valeurs codées en dur pour le moment. Cela fonctionne mais peut-il être rendu plus simple et plus efficace?
code:
DECLARE @startDate smallDateTime
DECLARE @roc decimal(5,2)
DECLARE @Lec decimal(5,2)
DECLARE @power decimal(5,2)
SET @roc = (SELECT roc FROM [Price] WHERE siteId = 77 AND PriceMonthId = 527)
SET @lec = (SELECT lec FROM [Price] WHERE siteId = 77 AND PriceMonthId = 527)
SET @power = (SELECT [power] FROM [Price] WHERE siteId = 77 AND PriceMonthId = 527)
SET @startDate = (Select [month] FROM [PriceMonth] WHERE PriceMonthId = 527)
UPDATE
Price
SET
roc = @roc
, lec = @lec
, [power] = @power
FROM
Price
INNER JOIN priceMonth pm ON price.priceMonthId = pm.priceMonthId
WHERE
(DATEPART(mm,pm.[Month]) > DATEPART(mm,@startDate) AND
(DATEPART(yy,pm.[Month]) = DATEPART(yy,@startDate))) AND
price.SiteId = 77
Pouvez-vous expliquer pourquoi vous avez besoin des espaces réservés? Pourquoi ne pas simplement insérer les prix lorsque vous avez les données réelles? – JohnFx
Bien sûr, c'est une exigence de l'entreprise afin qu'ils n'ont pas à tous les prix d'année en année. J'ai demandé à changer cela mais je ne suis pas autorisé - donc en un mot, ça n'a pas vraiment d'importance - j'en ai besoin. – Davy