gpt4 book ai didi

Select 中的 MySQL 程序?

转载 作者:可可西里 更新时间:2023-11-01 06:39:49 31 4
gpt4 key购买 nike

我有一个这样工作的程序:

mysql> call Ticket_FiscalTotals(100307);
+---------+--------+----------+------------+------------+
| Service | Items | SalesTax | eTaxAmount | GrandTotal |
+---------+--------+----------+------------+------------+
| 75.00 | 325.00 | 25.19 | 8.00 | 433.19 |
+---------+--------+----------+------------+------------+
1 row in set (0.08 sec)

我想从一个选择中调用这个过程,就像这样:

SELECT     Ticket.TicketID as `Ticket`, 
Ticket.DtCheckOut as `Checkout Date / Time`,
CONCAT(Customer.FirstName, ' ', Customer.LastName) as `Full Name`,
Customer.PrimaryPhone as `Phone`,

(CALL Ticket_FiscalTotals(Ticket.TicketID)).Service as `Service`

FROM Ticket
INNER JOIN Customer ON Ticket.CustomerID = Customer.CustomerID
ORDER BY Ticket.SiteHomeLocation, Ticket.TicketID

但是我知道这是非常错误的。有人可以指出我正确的方向吗?我将需要访问要在最终选择中(加入?)的过程中的所有列。该过程中的 SQL 代码相当痛苦,因此首先是它的原因!

最佳答案

Ticket_FiscalTotals 过程返回一个包含一些字段的数据集,但您只需要其中一个字段 - Service。将您的过程重写为存储函数 - Get_Ticket_FiscalTotals_Service

另一种方法是在过程中创建和填充临时表,并将这个临时表添加到查询中,例如:

DELIMITER $$

CREATE PROCEDURE Ticket_FiscalTotals()
BEGIN
DROP TEMPORARY TABLE IF EXISTS temp1;
CREATE TEMPORARY TABLE temp1(
Service FLOAT(10.2),
Items FLOAT(10.2),
SalesTax FLOAT(10.2),
eTaxAmount FLOAT(10.2),
GrandTotal FLOAT(10.2)
);
INSERT INTO temp1 VALUES (75.0, 325.0, 25.19, 8.0, 433.19);
END
$$

DELIMITER ;

-- Usage
CALL Ticket_FiscalTotals();
SELECT t.*, tmp.service FROM Ticket t, temp1 tmp;

关于Select 中的 MySQL 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500091/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com