2011-10-28 4 views
0

나는 다음 INSERT 문이 : 나는 폰트 될 이름을 기준으로 KitGroupID을 찾기 위해 다른 쿼리를 실행해야SELECT 쿼리로 INSERT 쿼리를 하시겠습니까?

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

합니다.

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

나는 약 30 productIDs이 있고 난 많은 글꼴이 : 여기

내가 약을하고 싶은 방법이다.

삽입 명령문을 실행 한 다음 실행 중 선택 쿼리를 통해 KitGroupID를 찾아 삽입을 완료해야합니다. 말이 돼?

는 는

난이, 난 SQL 아주 새로운 오전 할 수있는 방법 .. 미리 감사가

+0

죄송합니다. 이해가 가지 않습니다. 같은 시간에 KITGROUP에 INSERT하고 KITGROUP에서 SELECT 할 것입니까? – sll

+1

KITGROUP이 아니라 KITITEM에 삽입하고 있습니다 – socha23

답변

5

당신은 SELECT 문에서 INSERT, 그리고 많이 포함 할 수 있습니다 리터럴의 그 SELECT :

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

당신은 어떻게 이런 종류의 쿼리를 호출합니까, 나는 그것을 읽고 싶습니다? – PD24

+1

파생 테이블을 사용하여 [INSERT] (http://msdn.microsoft.com/en-us/library/ms174335(v=SQL.100) .aspx) 쿼리입니다. –

+0

제 예제를 보겠습니다. select 문이 삽입 값을 어떻게 추가하는지 보지 못합니까? – PD24

2

당신과 같이 수행 할 수

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

anotherConstantValue ...? 이것은 무엇을 의미 하는가? – PD24

+2

'...'또는 Kirk의 'More values'와 동일합니다. Kirks 대답은 내 제품보다 조금 우아합니다. ProductId 및 Name에 대한 KitGroup 값이 항상 제공됩니다. '레코드가 없다면 Kirk의 쿼리는 레코드를 삽입하지 않는 반면, 내 대답은 KitValue.KitGroupId에 NULL 삽입을 시도합니다. – StuartLC

+0

당신은 이런 종류의 쿼리를 무엇이라고 부릅니까? – PD24

0

내 SQL입니다
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를 마무리합니까? –