2015-05-04 64 views
0

我有一個字段名稱中的多個記錄表...評論...與我的ASPX代碼評論欄中的數據插入三行不同requirementcommentid,但字段的評論將保持相同 檢索不同我用這個查詢編輯和更新記錄使用參考編號

SELECT distinct (
       select top 1 requirementcommentid 
       from Requirementcomment 
       where requirementcomment=rc.requirementcomment 
       and fcr.SectionID in(
             SELECT sectionid 
             FROM [dbo].udfGetSectionID_allComYear(2151) 
            ) 
       AND fcr.FirmID = 20057 
       ), 
     rc.IsRejected, 
     fcr.SectionID, 
     rc.UserID, 
     rc.RequirementComment, 
     convert(varchar(25), dateadd(hour, -5, rc.InsertDate),101) as InsertDate, 
     Department.DeptName, 
     FirmUser.DepartmentID, 
     rc.FirmComplianceYearID 
FROM RequirementComment rc 
INNER JOIN FirmComplianceRequirement fcr ON fcr.FirmComplianceRequirementID = rc.FirmComplianceRequirementID 
INNER JOIN FirmUser ON FirmUser.FirmUserID =rc.UserID 
INNER JOIN Department ON Department.DeptID = FirmUser.DepartmentID WHERE rc.IsRejected = 1 
AND fcr.SectionID in(SELECT sectionid FROM [dbo].udfGetSectionID_allComYear (2151)) 
AND fcr.FirmID = 20057 AND rc.RequirementComment!='' 

如果我想編輯這個獨特的評論和更新it.how我可以做到這一點......因爲只有一個註釋行被編輯留在現場評論兩行值保持不變...!

我想剩下的數據自動,如果我在編輯時點擊如果在存放時你不能用一個程序解決此更新和更新,只有單個記錄

+0

所以,說你有3條評論爲「測試評論」,和你想改變這三個以「測試點評變」 。對? – danish

+0

是....但離子gridview我只選擇不同的(頂部1)...所以,我只能看到一個測試評論來編輯...但如果我編輯這個我想它在數據庫中也改變休息兩個...我的意思是測試評論--- T在gridview中評論,但在數據庫中它必須改變爲剩下的兩個是1)T評論2)評論3)T評論 – user3367558

+0

你需要顯示你已經有的代碼。所有你需要的是使用where子句的更新。 – danish

回答

0

,或者.NET,可以考慮使用觸發器。我做了一個普通的例子,因爲你的示例代碼是一個有點複雜:)

CREATE TABLE TMP_TriggerTable 
(
    ID INT IDENTITY(1,1) PRIMARY KEY 
    , ID2 INT NOT NULL 
    , Comment VARCHAR(255) NOT NULL 
) 

GO 

INSERT INTO TMP_TriggerTable 
SELECT 1, 'asd' 
UNION ALL 
SELECT 1, 'asd' 
UNION ALL 
SELECT 1, 'asd' 
UNION ALL 
SELECT 2, 'asd' 
UNION ALL 
SELECT 2, 'asd' 
UNION ALL 
SELECT 2, 'asd' 

GO 


CREATE TRIGGER TRG_TMP_TriggerTable ON TMP_TriggerTable 
AFTER UPDATE 
AS 
BEGIN 

    WITH InsertedIDPriority AS 
    (
     --Handle if more than one related comment was updated 
     SELECT Prio = ROW_NUMBER() OVER (PARTITION BY ID2 ORDER BY ID) 
     , ID 
     , ID2 
     , Comment 
     FROM INSERTED 
    ) 
    UPDATE t SET Comment = i.Comment FROM TMP_TriggerTable t 
    JOIN InsertedIDPriority i ON 
    t.ID2 = i.ID2 --Select all related comments 
    AND t.ID != i.ID2 --No need to update main column two times 
    AND i.Prio = 1 --Handle if more than one related comment was updated 

END 

GO 

UPDATE TMP_TriggerTable SET Comment = 'asd2' WHERE ID = 1 

/* 

SELECT * FROM TMP_TriggerTable 

--Returns-- 
ID ID2 Comment 
1 1 asd2 
2 1 asd2 
3 1 asd2 
4 2 asd 
5 2 asd 
6 2 asd 
*/