顧客レビューを計算してページに表示するには、次のことを行う必要があります。
STEP 1. T1 からデータを選択し、レコードをカウントして評価を計算する
SELECT COUNT(Rating) As ReviewCount,
ObjectID as ObID,
SUM(Rating)/COUNT(Rating) As ReviewScore
FROM [dbo].[Comment]
WHERE ObjectTypeID ='2' AND StatusID ='2'
GROUP BY ObjectID
このコードは正常に動作します。
次に行うことは、計算された ReviewScore 値を T2 に挿入することです
INSERT INTO [dbo].[AttributeValue] (AttributeID, Value, SortOrder)
VALUES (5,ReviewScore, 29)
ステップ 2 次にやりたいことは、たとえば、各アイテムごとに ID (最後に挿入された ID) を取得することです。
DECLARE @ID INT= @@IDENTITY
STEP3
STEP 2 で挿入された行ごとに @@Identity を取得し、新しいデータを挿入したい:
------- AtribbuteID is always 5
---- ObID is taken from the STEP 1
INSERT INTO [dbo].[AttributeObjectValue]
([AttributeID],[ObjectID],[Value],[AttributeValueID])
VALUES (5,ObID,ReviewScore,@ID)
CTE テーブルを使用しようとしていますが、機能しません。
BEGIN TRAN
GO
;WITH CTE (ReviewCount, ObjectID, ReviewScore)
AS
(
SELECT COUNT(Rating) As ReviewCount,
ObjectID as ObID,
SUM(Rating)/COUNT(Rating) As ReviewScore
FROM [dbo].[Comment]
WHERE ObjectTypeID ='2' AND StatusID ='2'
GROUP BY ObjectID
)
INSERT INTO [dbo].[AttributeValue] (AttributeID, Value, SortOrder)
VALUES (5,ReviewScore, 29)
SELECT ReviewCount FROM CTE
DECLARE @ID INT= @@IDENTITY
INSERT INTO [dbo].[AttributeObjectValue]
([AttributeID],[ObjectID],[Value],[AttributeValueID])
VALUES (5,ObID,ReviewCount,@ID)
GO
ROLLBACK TRAN
どんな助けにも感謝します