0

このクエリを更新ステートメントに変換する必要があります。フィールドの値を更新する必要があります。更新ステートメントを除いて、すべてが既に整っています。

クエリの選択バージョンは次のとおりです。

SELECT i.GoLiveDate, i.FirstBonusRun, i.TechFName, i.TechLName, i.TechEmail, i.TechPhone, i.WebISPFName, i.WebISPLName, 
              i.WebISPEmail, i.WebISPPhone, i.FullFillFName, i.FullFillLName, i.FullFillEmail, i.FullFillPhone, d.FName,
              d.LName, d.HomePhone, d.Email
              FROM NC_Information i
              INNER JOIN Distributor d
                ON d.DistID = i.ClientID
              WHERE clientID = @value

同じクエリ内から 2 つの異なるテーブルを更新することは可能ですか?

これが私がこれまでに持っているコードです:

public void Update (int ClientID)
{
    using ( var conn = new SqlConnection( GeneralFunctions.GetConnectionString() ) )
    using ( var cmd = conn.CreateCommand() )
    {
        conn.Open();
        cmd.CommandText =
        @"SELECT i.GoLiveDate, i.FirstBonusRun, i.TechFName, i.TechLName, i.TechEmail, i.TechPhone, i.WebISPFName, i.WebISPLName, 
          i.WebISPEmail, i.WebISPPhone, i.FullFillFName, i.FullFillLName, i.FullFillEmail, i.FullFillPhone, d.FName,
          d.LName, d.HomePhone, d.Email
          FROM NC_Information i
          INNER JOIN Distributor d
            ON d.DistID = i.ClientID
          WHERE clientID = @value";
        cmd.Parameters.AddWithValue( "@value", ClientID );
        cmd.ExecuteNonQuery();
    }
}
4

3 に答える 3

3

1 つのステートメントで複数のテーブルを更新することはできませんが、トランザクションを使用して、更新が互いに依存していることを確認できます。

BEGIN TRANSACTION

UPDATE SomeTable
SET SomeColumn  = 'Foo' 
WHERE SomeID = 123   

UPDATE AnotherTable
SET AnotherColumn = 'Bar'
WHERE AnotherID = 456    

COMMIT 
于 2012-04-23T18:04:02.527 に答える
0

2 つのテーブルを直接更新することはできないと思います。しかし、クエリはできOptimizeます。

どのように?

Insert/Update/Delete ステートメントの OUTPUT キーワード

最初のUpdate Statement's Select Data(filtered data)ものは、以下に示す例を使用して再利用できます。

CREATE TABLE #table1
(
    id INT,
    employee VARCHAR(32)
)
go

INSERT INTO #table1 VALUES 
      (1, 'name1')
     ,(2, 'name2')
     ,(3, 'name3')
     ,(4, 'name4');
GO

DECLARE @GuestTable TABLE
(
    id INT,
    employee VARCHAR(32)
);

update #table1
Set id = 33
OUTPUT inserted.* INTO @GuestTable
Where id = 3

「@GuestTable」テーブルのデータはフィルタリングされたデータであり、再利用できます。

select * from @GuestTable

drop table #table1
于 2012-04-23T18:11:32.857 に答える
0

または、2 つのデータテーブルを含むデータセットを作成し、tableadaptermanagerに更新を管理させることもできます。

于 2012-04-23T18:17:52.640 に答える