繁体   English   中英

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

[英]Get the value from a variable of a table and INSERT into the new table with extra variable for the new table not working?

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

该查询将从名为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 查询命令。 注意:integer 和数学计算只是为了测试,我将在程序中改为参数化查询。

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来自哪里。 据推测,您将其作为某种参数传入。

此外,您的数据 model 未标准化,这是一件坏事。 您应该只在购物车中包含foodID并使用JOIN查找值的 rest 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM