CREATE TRIGGER Items_PackagesChanges ON Items_Packages FOR DELETE, INSERT, UPDATE AS BEGIN UPDATE Packages SET PackagePrice = TableOne.PackagePrice FROM (SELECT PackageId = Packages.PackageId, PackagePrice = SUM(((Products.ProductPrice * Products_Items.Quantity) * Items_Packages.Quantity) *.90) FROM Products INNER JOIN Products_Items ON Products.ProductId = Products_Items.ProductId INNER JOIN Items ON Products_Items.ItemID = Items.ItemID AND Items.ItemIsAvailable = 1 INNER JOIN Items_Packages ON Items.ItemId = Items_Packages.ItemId INNER JOIN Packages ON Items_Packages.Packageid = Packages.PackageId GROUP BY Packages.PackageId) AS TableOne INNER JOIN Packages ON TableOne.PackageId = Packages.PackageId AND Packages.PackageId IN /** next 3 lines are the new, correct subquery **/ (SELECT DISTINCT PackageId FROM Items_Packages INNER JOIN (SELECT ItemId FROM Inserted UNION SELECT ItemId FROM Deleted) AS TableTwo ON Items_Packages.ItemId = TableTwo.ItemID) /** Next 3 lines are the old subquery (SELECT DISTINCT Items_Packages.PackageId FROM Items_Packages LEFT OUTER JOIN Inserted ON Items_Packages.ItemID = Inserted.ItemId LEFT OUTER JOIN Deleted ON Items_Packages.ItemId = Deleted.ItemId) **/ END