Вставить запрос с помощью запроса SELECT? - PullRequest
0 голосов
/ 28 октября 2011

У меня есть следующий оператор 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 идентификаторов продуктов, и у меня много шрифтов.

Мне нужно запустить оператор вставки, тогда, пока он выполняется, мне нужен запрос на выборку, чтобы узнать KitGroupID, чтобы затем завершить вставку. Имеет ли это смысл?

Как я могу это сделать, я новичок в SQL .. Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 28 октября 2011

Вы можете INSERT из оператора SELECT и включать в него множество литералов SELECT:

INSERT [StoreTestDB].[dbo].[KitItem]
     -- all your column names
SELECT TOP 1
    'Value',
    23,
    [KitGroupId],
    'More values',
    -- ...
FROM [KitGroup] WHERE ...
2 голосов
/ 28 октября 2011

Вы можете сделать так:

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 голосов
/ 28 октября 2011

Вот мой 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...