基于另一个表中的数据插入到表中(SQL语法)

基于另一个表中的数据插入到表中(SQL语法),sql,sql-server-ce,sql-insert,Sql,Sql Server Ce,Sql Insert,我希望我的团队是对的。我没有看到单独的SQL问题组。我有我的想法,希望是一个简单的问题。我已经修改了表格(以保护工作机密),我相信我有一个简单、可复制的示例。下面是构建表和填充某些数据的脚本。我需要一种基于另一个表的值在一个表中填充数据的方法。这是为了测试目的 我有三张桌子:装卸台、卡车和卡车制造。卡车具有LoadingBay的外键:Truck.LoadingBayId->LoadingBay.Id。TruckMake只包含三行“Ford”、“GM”和“Toyota”,无论好坏,都没有链接到任何

我希望我的团队是对的。我没有看到单独的SQL问题组。我有我的想法,希望是一个简单的问题。我已经修改了表格(以保护工作机密),我相信我有一个简单、可复制的示例。下面是构建表和填充某些数据的脚本。我需要一种基于另一个表的值在一个表中填充数据的方法。这是为了测试目的

我有三张桌子:装卸台、卡车和卡车制造。卡车具有LoadingBay的外键:Truck.LoadingBayId->LoadingBay.Id。TruckMake只包含三行“Ford”、“GM”和“Toyota”,无论好坏,都没有链接到任何表

我在装货间有一些数据。对于状态为空的每个装货区行,我想添加一辆卡车。要将日期放入装货区,我已成功使用:

INSERT INTO LoadingBay  (Tall, Status) values (1, 'Empty') -- 1 means 'Tall Bay'
要放入卡车,我使用:

INSERT INTO TRUCK (LoadingBayId, Make, Notes, BigEngine) values (1, 'Ford', 'Used Truck', 0)
请注意,我必须手动输入LoadingBayId,并且我需要为每辆卡车执行此操作。还请注意,我输入了“Ford”,没有引用TruckMake表

我想为每个装货区装一辆卡车,并尝试了以下各种组合:

INSERT INTO TRUCK (LoadingBayId, Make, Notes, BigEngine) values (select from LoadingBay where Status = 'Empty')
-- and try this
INSERT INTO TRUCK (LoadingBayId, Make, Notes, BigEngine) values (select LoadingBayId from LoadingBay where Status = 'Empty', 'GM','Random Note',1)
无济于事

有人能告诉我如何做到这一点,并将硬编码的“GM”替换为从TruckMake中随机选择一行,也只选择第一行(我想要两种选择)

我试图对此进行研究,但没有找到答案。我突然想到,某种形式的ForEach循环可能是一种选择,但其他来源建议您不应该在SQL中使用它。相反,人们应该从集合的角度来思考

请让我知道,如果我可以提供澄清或更多的材料。为草率的标题道歉。我怀疑如果我能制定一个好的标题,我就不会有这个问题:)

非常感谢,

戴夫 下面是添加数据库并填充它的脚本。我正在使用SQL Server Compact 4.0

-- Script Date: 3/8/2017 9:38 AM  - ErikEJ.SqlCeScripting version 3.5.2.64
-- Database information:
-- Locale Identifier: 1033
-- Encryption Mode: 
-- Case Sensitive: False
-- Database: C:\Andrew DBs\Play.sdf
-- ServerVersion: 4.0.8876.1
-- DatabaseSize: 128 KB
-- SpaceAvailable: 3.999 GB
-- Created: 3/8/2017 8:30 AM

-- User Table information:
-- Number of tables: 3
-- LoadingBay: 6 row(s)
-- Truck: 1 row(s)
-- TruckMake: 3 row(s)

CREATE TABLE [TruckMake] (
  [Id] int IDENTITY (4,1) NOT NULL
, [Make] nchar(100) NOT NULL
);
GO
CREATE TABLE [Truck] (
  [Id] int IDENTITY (3,1) NOT NULL
, [LoadingBayId] int NOT NULL
, [Make] nchar(100) NOT NULL
, [Notes] nchar(100) NULL
, [BigEngine] bit NOT NULL
);
GO
CREATE TABLE [LoadingBay] (
  [Id] int IDENTITY (7,1) NOT NULL
, [Tall] bit NOT NULL
, [Status] nchar(100) NOT NULL
);
GO
SET IDENTITY_INSERT [TruckMake] ON;
GO
INSERT INTO [TruckMake] ([Id],[Make]) VALUES (
1,N'Ford                                                                                                ');
GO
INSERT INTO [TruckMake] ([Id],[Make]) VALUES (
2,N'GM                                                                                                  ');
GO
INSERT INTO [TruckMake] ([Id],[Make]) VALUES (
3,N'Toyota                                                                                              ');
GO
SET IDENTITY_INSERT [TruckMake] OFF;
GO
SET IDENTITY_INSERT [Truck] ON;
GO
INSERT INTO [Truck] ([Id],[LoadingBayId],[Make],[Notes],[BigEngine]) VALUES (
1,1,N'Ford                                                                                                ',N'Used Truck                                                                                          ',0);
GO
SET IDENTITY_INSERT [Truck] OFF;
GO
SET IDENTITY_INSERT [LoadingBay] ON;
GO
INSERT INTO [LoadingBay] ([Id],[Tall],[Status]) VALUES (
1,1,N'Empty                                                                                               ');
GO
INSERT INTO [LoadingBay] ([Id],[Tall],[Status]) VALUES (
2,1,N'Empty                                                                                               ');
GO
INSERT INTO [LoadingBay] ([Id],[Tall],[Status]) VALUES (
3,1,N'Empty                                                                                               ');
GO
INSERT INTO [LoadingBay] ([Id],[Tall],[Status]) VALUES (
4,1,N'Empty                                                                                               ');
GO
INSERT INTO [LoadingBay] ([Id],[Tall],[Status]) VALUES (
5,1,N'Empty                                                                                               ');
GO
INSERT INTO [LoadingBay] ([Id],[Tall],[Status]) VALUES (
6,1,N'Empty                                                                                               ');
GO
SET IDENTITY_INSERT [LoadingBay] OFF;
GO
ALTER TABLE [TruckMake] ADD CONSTRAINT [PK_TruckMake] PRIMARY KEY ([Id]);
GO
ALTER TABLE [Truck] ADD CONSTRAINT [PK_Truck] PRIMARY KEY ([Id]);
GO
ALTER TABLE [LoadingBay] ADD CONSTRAINT [PK_LoadingBay] PRIMARY KEY ([Id]);
GO
ALTER TABLE [Truck] ADD CONSTRAINT [IXX_LoadingBay] UNIQUE ([LoadingBayId]);
GO