#mysql
#mysql
Вопрос:
Вот в чем проблема: я вызываю хранимую процедуру get_orders_for_route()
от 1 до n раз в зависимости от того, сколько маршрутов будет доставлено за определенный день.
Каждый раз, когда я вызываю маршрут, я хочу поместить данные о доставке в отдельную таблицу, а затем, как только все маршруты будут выбраны, вызовите get_sum_route_orders()
which будет суммировать и группировать данные, вставленные в таблицу.
Однако я пытался использовать временную таблицу, но, похоже, она недоступна, когда я создаю ее в одной хранимой процедуре и пытаюсь прочитать ее в другой.
Я попытался создать обычную таблицу и удалить из нее все, вставить в нее, а затем прочитать данные, но, похоже, она никогда не удаляет все записи до того, как начнет вставлять новые, и поэтому информация ненадежна.
В моей последней попытке ниже я хочу выбрать все заказы, которые были отмечены для доставки 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 и т.д…
Кто-нибудь может помочь мне с решением этой проблемы?
Следует отметить, что это размещено на GoDaddy, поэтому я не знаю, имеет ли это какое-либо значение.
Приветствия