は早期私のコードでは、私は(他の変数間の)変数を宣言した:ジョインを含む選択式を使用して宣言された変数を設定しますか?
:DECLARE @ZIPFk int;
続いて、その後すぐに、私は2つが含まれて参加する選択式を使用して上記の変数の値を設定しよう
SET @ZIPFk=(SELECT Zip.id
FROM Zip
INNER JOIN Zip5 ON Zip5.id=Zip.Zip5Fk
JOIN PlaceName ON Zip5.PlaceNameFk=PlaceName.id
WHERE [email protected] AND [email protected])
これは機能しません。理由を把握することができません。結果のテーブルは、@ ZIPFkの値を入力したい/期待したいフィールドにNULL値を持っています。宣言された変数を除いて、単独で実行すると、SELECTION式は単一の行/単一の列/単一の値を持つ表になります。
USE MyDatabase;
DECLARE @USPSComm varchar = 'Springville' --<--Enter USPS ZIP community name here
DECLARE @ZIPCode varchar = '99221' --<--Enter USPS ZIP Code here
DECLARE @RowsToProcess int;
DECLARE @ZIPFk int;
DECLARE @CurrentRow int;
DECLARE @SelectedUUID uniqueidentifier;
DECLARE @UUIDTable table (RowID int not null primary key identity (1,1), UUID uniqueidentifier);
SET @ZIPFk=(SELECT a.id
FROM dbo.Zip AS a
INNER JOIN Zip5 as b ON b.id=a.Zip5Fk
JOIN PlaceName as c ON b.PlaceNameFk=c.id
WHERE [email protected] AND [email protected])
INSERT INTO @UUIDTable (UUID) VALUES
('f4x6faf4-bxx2-4166-bcd6-88c9af8ab546'), ('3e20xx5e-5edc-4735-8962-5ab3c50d053e'),
('696xxB2D-50DE-4361-807D-48xxD2AC5CxB')
, ('c5879x41-e144-4ecc-8056-5493exxx1a5'), ('af7993cf-2xec-4c5f-b02e-92cb6dxxxf2b')
SET @RowsToProcess [email protected]@ROWCOUNT
SET @CurrentRow=0
WHILE @CurrentRow<@RowsToProcess
BEGIN
SET @CurrentRow [email protected]+1
SELECT
@SelectedUUID=UUID
FROM @UUIDTable
WHERE [email protected]
UPDATE CompleteSubaddressZip
SET [email protected]
FROM CompleteSubaddressZip as a
JOIN CompleteSubaddress AS b ON b.id=a.CompleteSubaddressFk
WHERE ([email protected])
END
:全体の事を見
UPDATE CompleteSubaddressZip
SET [email protected]
FROM CompleteSubaddressZip as a
JOIN CompleteSubaddress AS b ON b.id=a.CompleteSubaddressFk
WHERE ([email protected])
そして...ここにされています。ここでは
は、実際のUPDATEが宣言された変数を使用して、発生したクエリの最後を見ています
*作業していないとはどういう意味ですか? –
これは、@ ZIPFk値を持つテーブルの1つのフィールドを更新することになっていますが、代わりにNULLに更新します。私はオリジナルの投稿(上記)を私のクエリのその部分でも更新します... –
なぜループを使用していますか?一度にすべてのレコードを設定することができます。さらに、zipからzip5への結合をplacemnameに行うことで、サブアドレスを完了してUUIDTableにサブアドレスを完成させ、1つのステートメントですべて実行することができます。 – Matt