0

顧客レビューを計算してページに表示するには、次のことを行う必要があります。

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

どんな助けにも感謝します

4

0 に答える 0