2011-10-28 17 views
0

私は次のINSERT文があります。SELECTクエリでINSERTクエリを実行しますか?

INSERT INTO [StoreTestDB].[dbo].[KitItem] 
      ([KitItemGUID] 
      ,[KitGroupID] 
      ,[Name] 
      ,[Description] 
      ,[PriceDelta] 
      ,[WeightDelta] 
      ,[IsDefault] 
      ,[DisplayOrder] 
      ,[ExtensionData] 
      ,[TextOptionMaxLength] 
      ,[TextOptionWidth] 
      ,[TextOptionHeight] 
      ,[InventoryVariantID] 
      ,[InventoryVariantColor] 
      ,[InventoryVariantSize] 
      ,[CreatedOn]) 
VALUES 
... 
... 
... 

を私は、フォントになります名前に基づいてKitGroupIDを見つけるために別のクエリを実行する必要があります。

SELECT TOP1 (KitGroupID) 
FROM KitGroup 
WHERE Name = "Font" 
AND ProductID = 157 

私は約30 productIDsを持っていると私は多くのフォントを持っている:ここでは

は、私は大体それをやってみたい方法です。

Insertステートメントを実行する必要がありますが、その実行中にSelectクエリを使用してKitGroupIDを調べ、挿入を確定してください。それは理にかなっていますか?あなたはSELECTの文からINSERT、および多くを含むことができ

INSERT INTO [StoreTestDB].[dbo].[KitItem] 
      ([KitItemGUID] 
      ,[KitGroupID] 
      ,[Name] 
      ,[Description] 
      ,[PriceDelta] 
      ,[WeightDelta] 
      ,[IsDefault] 
      ,[DisplayOrder] 
      ,[ExtensionData] 
      ,[TextOptionMaxLength] 
      ,[TextOptionWidth] 
      ,[TextOptionHeight] 
      ,[InventoryVariantID] 
      ,[InventoryVariantColor] 
      ,[InventoryVariantSize] 
      ,[CreatedOn]) 
SELECT 
    NEWID(), 
    (
    SELECT TOP1 (KitGroupID) 
    FROM KitGroup 
    WHERE Name = "Font" 
    AND ProductID = 157 
) 
    , anotherConstantValue ... 
+0

私には申し訳ありませんが、あなたはKITGROUPにINSERTして、KITGROUPからSELECTを同時に実行しますか? – sll

+1

彼はキットではなくKITITEMに挿入しています – socha23

答えて

5

:どのように私はこれを行うことができ、私はSQLに非常に新しいです..事前に感謝

+0

あなたはこのようなクエリを何と呼びますか、それを読んでいますか? – PD24

+1

派生テーブルを使用している[INSERT](http://msdn.microsoft.com/en-us/library/ms174335(v = SQL.100).aspx)クエリです。 –

+0

私の例を見てください、私はまだ選択ステートメントが挿入に値を追加する方法を参照してくださいか? – PD24

2

あなたがそうのように行うことができます

ここで

INSERT [StoreTestDB].[dbo].[KitItem] 
    -- all your column names 
SELECT TOP 1 
    'Value', 
    23, 
    [KitGroupId], 
    'More values', 
    -- ... 
FROM [KitGroup] WHERE ... 
+0

anotherConstantValue ...?これは何を意味するのでしょうか? – PD24

+2

あなたの '...'またはKirkの 'More values'と同じです。 Kirksの答えは、私のものより少しエレガントです.ProductIdとNameのKitGroup値が常にあることがわかりました。レコードがない場合、私の答えはKitValue.KitGroupIdにNULLを挿入しようとしますが、Kirkのクエリはレコードを挿入しません。 – StuartLC

+0

このようなクエリは何と呼びますか? – PD24

0

は私のsqlです:

その SELECTでリテラルの
INSERT INSERT INTO [StoreTestDB].[dbo].[KitItem]([KitGroupID],[Name],[PriceDelta],[WeightDelta],[IsDefault],[DisplayOrder],[InventoryVariantID]) VALUES (17,'<ml><locale name="en-GB">Gaudi</locale></ml>',0,0,1,1,0)  
SELECT TOP (1) KitGroupID, Name, ProductID FROM KitGroup WHERE (Name = 'Fonts') AND (ProductID = 157) 
+0

あなたのSELECTはどのようにしてINSERTを完成させますか? –

関連する問題