2015-05-04 57 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 
*/