Ўставілі запыт з 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 і ў мяне ёсць шмат шрыфтоў.

Мне трэба выканаць інструкцыю ўстаўкі, то падчас яго працы мне патрэбен абярыце запыт, каб даведацца KitGroupID у тым завяршыць ўстаўку. Ці значыць гэта мае сэнс?

Як я магу гэта зрабіць, я зусім новай для SQL .. Загадзя дзякуй

0
На жаль бушаль для мяне гэта не мае сэнсу, вы збіраецеся ўставіць у KITGROUP і ВЫБРАЦЬ з KITGROUP ў той жа час?
дададзена аўтар sll, крыніца
Ён устаўляючы ў KITITEM, ня KITGROUP
дададзена аўтар socha23, крыніца

3 адказы

Вы можаце INSERT з SELECT заяву, і ўключаюць у сябе шмат литералов у гэтым SELECT :

INSERT [StoreTestDB].[dbo].[KitItem]
     -- all your column names
SELECT TOP 1
    'Value',
    23,
    [KitGroupId],
    'More values',
    -- ...
FROM [KitGroup] WHERE ...
5
дададзена
@ PD24 Ёсць два спосабу INSERT Дадзеныя - вы можаце выкарыстоўваць Значэнне , або вы можаце выкарыстоўваць SELECT . У вашым зыходным прыкладзе, калі вы зменіце VALUES ( «значение1», «значение2», і г.д.) для SELECT «значение1», «значение2», і г.д. вы ўбачыце, што абодва ўставіць тое ж самае.
дададзена аўтар Kirk Broadhurst, крыніца
Гэта ўставілі запыт, выкарыстоўваючы вытворная табліца.
дададзена аўтар Tom Hunter, крыніца
тое, што вы называеце гэты від запыту, я хацеў бы чытаць на ім?
дададзена аўтар PD24, крыніца
калі ласка, паглядзіце на маім прыкладзе, я да гэтага часу не бачу, як аператар выбару дадасць значэнне ўстаўкі?
дададзена аўтар PD24, крыніца

Вы можаце зрабіць так:

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 ...
2
дададзена
Тое ж самае, як вашыя «...» або "Больш значэнняў" Кірха. Kirks адказ з'яўляецца трохі больш элегантна, чым у мяне, пры ўмове, што заўсёды ёсць значэнне KitGroup для ProductID і імя. Калі там не »запіс, то мой адказ будзе рабіць спробу NULL ўстаўкі ў KitValue.KitGroupId тады запыт Кірха ня уставіць запіс наогул у дадзеным выпадку.
дададзена аўтар StuartLC, крыніца
INSERT..VALUES ня onlt форма ўстаўкі - Вы можаце таксама ўставіць ... SELECT (ўставіць некалькі радкоў, як правіла, з іншых табліц) і INSERT ... EXEC (г.зн. ўставіць выснова ў PROC). Глядзіце прыклады MSDN тут - msdn.microsoft.com/en-us/library/dd776381 .aspx
дададзена аўтар StuartLC, крыніца
anotherConstantValue ...? што гэта значыць?
дададзена аўтар PD24, крыніца
што вы называеце гэта свайго роду запыт?
дададзена аўтар PD24, крыніца

Вось мой SQL:

INSERT INSERT INTO [StoreTestDB].[dbo].[KitItem]([KitGroupID],[Name],[PriceDelta],[WeightDelta],[IsDefault],[DisplayOrder],[InventoryVariantID]) VALUES (17,'Gaudi',0,0,1,1,0)       
SELECT TOP (1) KitGroupID, Name, ProductID FROM KitGroup WHERE (Name = 'Fonts') AND (ProductID = 157)
0
дададзена
Проста цікава: Якім чынам робіць ваш ВЫБРАЦЬ дапрацоўвае Дададзены?
дададзена аўтар Andriy M, крыніца