#mysql
Вопрос:
У меня есть два столика.
Таблица заказов — в этой таблице показаны заказы, выполненные за 5 дней доставки (Чт, Пт, Сб, Вс, Пн). Есть фиксированные 5 дней доставки. В этой таблице есть order_id, cust_id, день доставки, статус (завершено, обработка и т. Д.)
2 — я таблица — таблицы выбора-Она показывает количество продуктов, выбранных подписчиком для доставки в течение этой конкретной недели. Они могут выбрать любой из 20 продуктов на этой неделе. Количество продуктов одинаковое, но продукты меняются каждую неделю. Теперь в этой таблице у нас есть выбор для всех людей, которые могли выбрать 4-5 недель назад, но теперь они, возможно, отменили подписку.
В таблице выбора есть — Cust_id, Product_id, ProductSlot, дата начала(четверг, как недели, начинается с четверга).
Поэтому мне интересно узнать фактическое количество вариантов только для тех людей, которые действительно получили свой заказ (статус в таблице заказов — Завершено)на этой конкретной неделе. Как я могу добавить условие, что если заказ будет выполнен в течение этих 5 дней(неделя в таблице выбора), а затем подсчитать выбор по идентификатору продукта?
Select product_id, cust_id, startDate, Number
from selections S
Group by product_id
join orders O on S.cust_id = O.cust_id
where orders.status in('completed', processing)
этот запрос дает неверный результат, потому что он не учитывает даты доставки.
считайте только выполненные заказы в пределах доставленных за эти 5 дней(Чт, Пт, Сб, Вс, Пн) и игнорируйте любые неудачные заказы и их выбор продуктов. В таблице выбора клиент с идентификатором cust_id 1239 выбрал 2 продукта, но его заказ имеет статус «сбой» в таблице заказов, поэтому не учитывайте его продукты.
Комментарии:
1. MySQL или PostgreSQL? Пожалуйста, не добавляйте теги для не задействованных баз данных
2. Что еще вы пробовали до сих пор? Вы ищете решение в MySQL или в PostgreSQL?
3. MYSQL. Я попытался добавить — ЛЕВЫЕ заказы на соединение O на S. cust_id = O. cust_id И S. Дата начала МЕЖДУ O. deliveydate И O. дата доставки. Просто пытаюсь понять.
4. Дайте нам примерные данные и ожидаемый результат, пожалуйста!!
5. Выполнено. Спасибо