从表的变量中获取值,并插入到新表中,而新表的额外变量不起作用



我正在测试一个VB.NET项目的SQL查询,该项目在用户选择食物数量后,将食物的详细信息插入到添加到购物车功能的表中。

该查询将从名为food的表中获取食品详细信息,如食品名称和食品价格,并需要将所有食品详细信息与数量和小计一起添加到名为Cart

我想从Food表中获得值,以及用户和INSERT输入到Cart表中的一些数量。

但是,有一个问题是,当我在SQL查询编译器中测试查询时,我想要添加的值显示的列名无效。

这是错误

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "Food.Id" could not be bound.
Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "Food.foodName" could not be bound.
Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "Food.price" could not be bound.
Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "Food.price" could not be bound.
Msg 207, Level 16, State 1, Line 3
Invalid column name 'qty'.

这是我的SQL查询命令。注意:整数和数学计算只是为了测试,我将在程序中更改为参数化查询

SELECT * FROM Cart
INSERT INTO Cart (foodID, foodName, foodPrice, [qty], total) 
VALUES (Food.Id, Food.foodName, Food.price, 2, Food.price * qty)
SELECT Id, foodName, price
FROM Food
WHERE foodName = 'BREAKFAST'
SELECT * FROM Cart

这是我创建的表格

CREATE TABLE [dbo].[Cart] (
[Id]        INT             IDENTITY (100000, 1) NOT NULL,
[foodID]    INT             NOT NULL,
[foodName]  VARCHAR(50)     NOT NULL,
[foodPrice] DECIMAL (18, 2) NOT NULL,
[qty]       INT             NOT NULL,
[total]     DECIMAL (18, 2) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
FOREIGN KEY ([foodID]) REFERENCES [dbo].[Food] ([Id]),
);
CREATE TABLE [dbo].[Food] (
[Id]       INT             IDENTITY (100, 1) NOT NULL,
[foodName] VARCHAR (50)    NOT NULL,
[price]    DECIMAL (18, 2) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

我很确定问题是我放入VALUE的变量不正确,我不确定将另一个表中的变量放入VALUE正确方法是什么?很抱歉提出这个问题,因为我对SQL数据库还很陌生。

您似乎想要这样的东西:

INSERT INTO Cart (foodID, foodName, foodPrice, [qty], total) 
SELECT f.Id, f.foodName, f.price, 2, f.price * qty
FROM Food f
WHERE f.foodName = 'BREAKFAST'

我不知道qty从哪里来。大概,你把它作为某种参数传入

此外,您的数据模型没有规范化,这是一件坏事。您应该将foodID包含在购物车中,并使用JOIN查找其余值。

最新更新