Мне нужно найти лучший и быстрый способ запроса таблицы 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
В результате выполнения вышеуказанного запроса будет выбрана строкас идентификатором 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 в памяти для получения результатов за каждый день, как показано ниже.
Результат, который мне нужно найти для диапазона дат с 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
Я надеюсь, что мой вопрос и проблема хорошо объяснены, и если вам нужны какие-либо дополнительные разъяснения по этой проблеме, пожалуйста,дай мне знать.
Надеюсь увидеть отличный ответ на этот вопрос.