Запрос истории на основе старого значения другого поля - PullRequest
0 голосов
/ 07 августа 2020

У меня есть таблица sql с именем «box», в которой есть поля:

id
status
quantity
created_date

Мне нужно знать, какой был статус и количество ящиков в любое время, поэтому я должен отслеживать записи изменения. Было бы довольно просто, если бы я использовал первое решение по этой ссылке: https://www.codeproject.com/Articles/105768/Audit-Trail-Tracing-Data-Changes-in-Database Но я бы хотел использовать второе, потому что оно более универсально.

Мне нужно чтобы запросить общее количество в различных ящиках в определенное время с определенным статусом. Так, например, нам нужно знать, какое количество во всех ящиках со статусом = 2 на 01.01.2019. Пока я знаю, как сделать запрос, который извлекает все поля, которые имели этот статус в то время.

SELECT box.*, l3.quantity FROM box 
LEFT JOIN log l1 ON l1.table='box' AND l1.column='status' AND l1.row=box.id AND l1.old_value=2 
AND l1.changed_date<='2019-01-01'
LEFT JOIN log l2 ON l2.table='box' AND l2.column='status' AND l2.row=box.id AND l2.old_value=2
AND l2.changed_date<='2019-01-01' AND l1.id<l2.id
WHERE box.created_date<='2019-01-01' AND(box.status=2 OR l1.old_value=2) AND l2.id IS NULL

Я не могу хоть убей узнать, как снова присоединиться к таблице журнала ( l3 в select), чтобы получить последнее изменение столбца количества, которое было либо до последнего изменения статуса, либо до created_date, если его не было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...