在tmp表中的MySQL中聚合数据

时间:2019-04-18 01:04:21

标签: mysql

这是问题所在:我要调用存储过程get_orders_for_route() 1至n次,具体取决于在特定一天要传递多少路由。

每次调用路线时,我都希望将交货数据放在单独的表中,然后在选择所有路线后,调用get_sum_route_orders(),它将对插入表中的数据进行汇总和分组。

但是,我尝试使用临时表,但是当我在一个存储过程中创建它并尝试在另一个存储过程中读取它时,该表似乎不可用。

我尝试创建一个常规表并删除其中的所有内容,然后将其插入其中,然后读取数据,但是在开始插入新记录之前,它似乎从未删除所有记录,因此信息不可靠。

在下面的最新尝试中,我想选择已标记为要交付ord_for_delivery = 1的所有订单。有了它们后,我想将ord_for_delivery改回0并返回将要发出的订单。

但是,当我检查order_details表时,它并没有将所有记录都设置为0,而是留下了一些衣架,然后将它们添加到下一批中。

DROP TABLE IF EXISTS tmpRouteOrders;
CREATE TEMPORARY TABLE tmpRouteOrders AS
SELECT 
    beer.beer_short_name AS bName,
    inventory_type.it_name AS itName,
    SUM(order_details.ord_det_amt) AS amt
FROM order_details 
        INNER JOIN
    beer ON beer.beer_id = order_details.ord_det_beerid
        INNER JOIN
    inventory_type ON inventory_type.inventory_typeid = order_details.ord_det_typeid
WHERE
    order_details.active = 1 AND order_details.ord_for_delivery = 1
GROUP BY  beer.beer_short_name , inventory_type.it_name
ORDER BY beer.beer_short_name, inventory_type.sort_order;

UPDATE 
    order_details
SET
    ord_for_delivery = 0;

SELECT * FROM tmpRouteOrders;

我也尝试过在单独的表DELETE FROM table中进行操作,但是它并没有删除所有记录,而是保留了一些记录。

我无法在一个SP中完成所有操作,因为我不知道要获得多少条路由,所以我不提前知道要传递给存储过程的内容。

理想情况下,我可以在存储过程中传递2,3,5,它可以转换为WHERE route_id = 2 AND route_id = 3 AND route_id = 5,但可以只是3,可以是1,2,5,6,等等... < / p>

有人可以帮助我解决这个问题吗?

需要注意的一件事是GoDaddy托管的,所以我不知道这有什么不同。

欢呼

0 个答案:

没有答案