Как я могу вставить или обновить строку со значением, возвращаемым из подзапроса? - PullRequest
1 голос
/ 14 октября 2011

РЕДАКТИРОВАТЬ: В поисках помощи от J. Leffler, Cheese Con Queso или любого, кто хорошо знает Informix-SE.

Informix-SE 4.11:

У меня есть таблица cuadre, которая используется для выверки кассового ящика в конце каждого рабочего дня (с понедельника по субботу). Как только ящик выверен, сумма в денежном ящике сохраняется в столбце «cu_sa_cash», строка сохраняется и система выключается, магазин закрывается на день, и мы все идем выпить пива. В течение рабочего дня мы запускаем систему, запускаем процедуру SQL, которая создает (вставляет) новую строку в таблицу cuadre для проводок этого дня и повторяет цикл снова.

Я бы хотел, чтобы мой SQL-оператор вставил новую строку для текущего дня с той же суммой денежных средств в ящике, которая была сохранена в предыдущей строке рабочих дней. Имейте в виду, что это не SPL, так как я все еще использую SE 4.11. Итак, приведенные ниже операторы SQL - это общее представление о том, чего я хочу достичь, но они не работают! .. Можете ли вы предоставить мне решение? .. Спасибо!

INSERT INTO cuadre(cu_date,cu_en_dincaja)
     VALUES (TODAY,(SELECT cu_sa_cash
                      FROM cuadre
                     WHERE cu_date = (SELECT MAX(cu_date)
                                        FROM cuadre)));

или

INSERT INTO cuadre(cu_date)
     VALUES(TODAY);   

UPDATE cuadre
   SET cu_en_dincaja = (SELECT cu_sa_cash
                          FROM cuadre
                         WHERE cu_date = TODAY - 1)
 WHERE cu_date = TODAY; 

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

использование временной таблицы было решением проблемы

0 голосов
/ 14 октября 2011

Я ничего не знаю, в частности, о informix, но это альтернативный синтаксис ...

INSERT INTO
  cuadre (
    cu_date,
    cu_en_dincaja
  )
SELECT
  TODAY,
  cu_sa_cash
FROM
  cuadre
WHERE
  cu_date = (SELECT * FROM (SELECT MAX(cu_date) FROM cuadre))
;

ПРИМЕЧАНИЕ. Может возвращать несколько строк, если cu_date не является уникальным.

EDIT Добавлен обходной путь MySQL для чтения из и записи в одну и ту же таблицу.Стоит ли тестировать в Informix?

...