【发布时间】:2021-03-11 02:26:48
【问题描述】:
我正在测试一个 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 数据库很陌生。
【问题讨论】:
-
请勿乱加标签
-
你不能用一个外键指向一个还不存在的表来创建一个表。首先需要创造食物。
-
@Larnu 嗨,Larnu,Food 表是根据我展示的上述代码 sn-p 创建的。
-
之后
Cart,所以Cart会创建失败 -
@Larnu 哦,对不起,Larnu,我明白你的意思,这有点误导。上面的代码 sn-p 只是我把这两个表合并成一个代码 sn-p 让所有的查看器都容易看,但实际上它们并没有编译在同一个地方,它们是分开的。谢谢提醒。
标签: mysql sql sql-server database vb.net