Я создаю модуль отчетности для клиента, и их текущий процесс затрудняет выполнение того, что я пытаюсь сделать. База данных - это MySQL, модуль написан на PHP.Выбор следующего появления определенной записи в MySQL
По сути, мне нужно найти заказ, который обрабатывает между запрошенными датами. Достаточно просто. Затем мне нужно найти первый раз, когда его статус настроен на отгрузку, потому что он может быть установлен взад и вперед между обработкой и отправкой несколько раз, если заказ возвращается или гарантируется и т. Д.
Но мне это нужно для выполнения двух отдельных запросов.
Я могу получить идентификатор заказа, где они обрабатываются. Моя проблема связана со вторым запросом, который я делаю:
SELECT * FROM status_history WHERE orders_id IN {list_of_ids} AND status = 'shipped' GROUP BY orders_id
.
Моя проблема заключается в том, что строка состояния «отправлено», которую производит этот запрос, может быть до/после требуемого.
Я понимаю, что основная проблема связана с их процессом и с прежней системой, с которой я должен работать, но что я не могу изменить.
Что мне нужно сделать, это: SELECT * FROM status_history WHERE orders_id IN <list_of_ids> AND status = 'shipped' AND date_added > {date at processing} AND date_added < {date at next occurrence of processing, if there is one} GROUP BY orders_id
Почему два запроса? – Strawberry
@Strawberry Мне нужно скомпилировать список всех идентификаторов из первого, независимо от того, отправлены они или нет, а затем, если они отправлены, мне нужна дополнительная информация. – David
Обычно это один запрос с внешним соединением. Рассмотрите возможность предоставления некоторых выборочных данных (в идеале sqlfiddle) и желаемого результата в качестве редактирования вашего вопроса. – Strawberry