存储过程将不同表中的值相乘

Posted

技术标签:

【中文标题】存储过程将不同表中的值相乘【英文标题】:Stored procedure multiplying values from different tables 【发布时间】:2021-04-14 11:58:24 【问题描述】:

所以我被存储过程困住了。

我在数据库中有这两个表:

交易

tID cID carID eID tDate PickupDate ReturnDate
1002 1006 1004 104 2018-04-18 2018-04-28 2018-04-2

汽车

CarID Make Model Type Year Price
1004 Ford Focus Hatch 2019 140.00

出于税收目的,我需要计算交易成本的 10%。我已经设法获得了租金的长度并将其存储到一个变量中,但无法弄清楚如何将交易中使用的汽车价格乘以价格的长度,然后显示结果。

这是我目前的代码:

CREATE PROCEDURE Tax_Due
    @tID INT
AS
    DECLARE @carPrice as INT
    DECLARE @rentLength as INT

    SELECT  @rentLength = DATEDIFF(day, PickupDate, ReturnDate) 
    FROM [Transaction]
    WHERE tID = @tID

    SELECT @carPrice = Price  
    FROM Car
    WHERE

【问题讨论】:

您的代码不是 mysql 代码。你真正使用的是什么数据库? 我正在使用 Microsoft SQL Server Management Studio 18 问题不能将不同表中的值相乘,因为您已经将“@rentength”放入变量中。这个问题不重要,它来自哪里。此外,在他/她取车之前不太可能还车。请重新定义您的问题和表格。 【参考方案1】:

我不明白为什么你不能像这样加入表格并进行计算

SELECT  DATEDIFF(day, PickupDate, ReturnDate) * Price.Price * .1 as tax
FROM    [Transaction] join [Price] on Transaction.carID = Price.carID
WHERE   tID = @tID

【讨论】:

非常感谢。成功了,只是改了几个名字。

以上是关于存储过程将不同表中的值相乘的主要内容,如果未能解决你的问题,请参考以下文章

如何通过存储过程更改列名并更改表中的值?

将不同表中的值相乘

用于向表中添加新行的存储过程,它检查值以验证它们在外部表上的值

访问数据库表中的值,并把它们作为一个参数,在MySQL存储过程

我们如何避免并行执行存储过程?

VB.NET是如何使用ADO让存储过程返回数据表中的值呢?求解!