1

結合されたテーブルを更新できる SqlServer でプロシージャを作成するつもりです。私の場合、2 つのテーブル (HowzeEducation と HowzeDegree) があるため、次のクエリを作成しましたが、エラーがあり、正しく動作しません。コードは次のとおりです。

declare 
@HowzeEducationId int,
@DegreeId int,
@FieldName nvarchar(50),
@FinishLevelDate date,
@Average decimal(4,2),
@SchoolName nvarchar(50),
@StudyCityDescribtion nvarchar(100),
@ThesisTitle nvarchar(200),
@Describtion nvarchar(600)


update (
  select he.FieldName,
     he.Average,
     he.Describtion,
     he.FinishLevelDate,
     he.SchoolName,
     he.StudyCityDescribtion,
     he.ThesisTitle,
     hd.DegreeId
from HowzeEducation he inner join HowzeDegree hd on 
     he.HowzeEducationId=hd.HowzeEducationId
   )
 set he.FieldName=@FieldName ,
he.Average=@Average,
he.Describtion=@Describtion,
he.FinishLevelDate=@FinishLevelDate,
he.SchoolName=@SchoolName,
he.StudyCityDescribtion=@StudyCityDescribtion,
he.ThesisTitle=@ThesisTitle,
hd.DegreeId=@DegreeId

where he.HowzeEducationId=@HowzeEducationId

この問題をどのように解決できますか?

4

2 に答える 2

2

1 つの update ステートメントを使用して 2 つのテーブルを更新することはできません。以下のように 2 つの更新を使用する必要があります。

declare 
@HowzeEducationId int,
@DegreeId int,
@FieldName nvarchar(50),
@FinishLevelDate date,
@Average decimal(4,2),
@SchoolName nvarchar(50),
@StudyCityDescribtion nvarchar(100),
@ThesisTitle nvarchar(200),
@Describtion nvarchar(600)


update HowzeEducation 
set Average=@Average,
    Describtion=@Describtion,
    FinishLevelDate=@FinishLevelDate,
    SchoolName=@SchoolName,
    StudyCityDescribtion=@StudyCityDescribtion,
    ThesisTitle=@ThesisTitle,
    FieldName=@FieldName
where HowzeEducationId=@HowzeEducationId

update HowzeDegree
set   DegreeId=@DegreeId
where HowzeEducationId=@HowzeEducationId
于 2012-10-17T07:13:29.237 に答える
0

ビューを介して複数のテーブルを変更できます。次のようなものを試してください。

create view HowzeView as
select he.FieldName,
     he.Average,
     he.Describtion,
     he.FinishLevelDate,
     he.SchoolName,
     he.StudyCityDescribtion,
     he.ThesisTitle,
     hd.DegreeId
from HowzeEducation he inner join HowzeDegree hd on 
     he.HowzeEducationId=hd.HowzeEducationId

update HowzeView
set FieldName=@FieldName,
Average=@Average,
Describtion=@Describtion,
FinishLevelDate=@FinishLevelDate,
SchoolName=@SchoolName,
StudyCityDescribtion=@StudyCityDescribtion,
ThesisTitle=@ThesisTitle,
DegreeId=@DegreeId
于 2012-10-17T07:18:19.137 に答える