Мне нужно найти лучший и быстрый способ запроса таблицы MySQL для получения конкретных данных за каждый день в заданном диапазоне дат, где в таблице есть два столбца даты, указывающие начало и дата окончания.Продвинутый запрос MySQl для получения конкретных записей по дате в одной таблице
Таблица Пример: Акции колонки:
ID startDate EndDate Discount CategoryID
=============================================================
1 2010/08/01 2010/08/10 10.00 A
2 2010/08/01 2010/08/10 15.00 B
3 2010/08/11 2010/08/15 05.00 A
4 2010/08/11 2010/08/15 10.00 B
Я знаю, что могу захватить продвижение соответствия в следующем запросе, когда два диапазона дат приведены
SELECT * FROM Promotions WHERE (startDate <= "2010/08/12" AND endDate >= "2010/08/15") AND CategoryID = A
Результат для вышеупомянутого запроса будет введите строку с ID 3
Однако, если два диапазона дат в вышеуказанном запросе были изменены на следующее:
SELECT * FROM Promotions WHERE (startDate <= "2010/08/12" AND endDate >= "2010/08/18") AND CategoryID = A
Я не получаю никакого согласованного результата, так как я понимаю, что логика не соответствует ни одной из сохраненных данных в таблице.
Вот почему мне нужно лучшее решение, в котором я могу получить результат, даже если дата окончания превышает дату окончания акции. Однако изменение логики не даст мне лучшего ответа, предположим, что я смогу получить результат, если я воспользуюсь следующим запросом, но это также не решает всей проблемы, если мне нужно найти скидки, действующие каждый день в диапазоне дат ,
SELECT * FROM Promotions WHERE (startDate <= "2010/08/12" AND CategoryID = A
Истинный результат мне нужен способ, чтобы преобразовать этот запрос в петлю или используя временную таблицу MySQL в Memmory, чтобы получить результаты за каждый день, как указано ниже.
Результат мне нужно найти для Диапазон дат 2010/08/12 до 2010/08/18
===================================================================
Date Discount
=========================
2010/08/12 05.00
2010/08/13 05.00
2010/08/14 05.00
2010/08/15 05.00
2010/08/16 null
2010/08/18 null
Я надеюсь, что мой вопрос и проблема хорошо объясняется и если вам нужны какие-либо дополнительные разъяснения относительно этой проблемы , пожалуйста, дай мне знать.
Надеемся увидеть отличный ответ для этого.
Вы запрашивая 'ENDDATE> = 2010/08/18', нет записей, которые должны соответствуют, так в чем проблема? –
Это немного неясно. Вы хотите найти в течение определенного дня акции, активные в этот день? И затем расширьте это, чтобы сказать «на все дни в этом диапазоне, показать мне акции, активные в этот день»? –
@ Попробуйте настоящую проблему, чтобы представить результат таким образом, как показано в таблице конечных результатов, которую я ищу, которая может индивидуально идентифицировать скидку, доступную для каждого дня, из доступных рекламных акций. – Raftalks