Задать вопрос
@lexstile

Как правильно составить условие для фильтрации?

Таблица:
5ec1a59553f9b785291337.png
UI:
5ec1a5e457df4441435873.png
Условие:
Array
(
    [day_1] => 1
    [month_1] => 1
    [year_1] => -1000
    [day_2] => 10
    [month_2] => 2
    [year_2] => -12
)

		SELECT events.id, events.name as event_name, events.date_start, events.date_end, events.country_id, events.description, events.day_1, events.day_2, events.month_1, events.month_2, events.year_1, events.year_2, countries.name as country_name, countries.cluster, links.links, images.images FROM events
		LEFT JOIN countries ON events.country_id = countries.id
		LEFT JOIN (SELECT event_id, GROUP_CONCAT(link) as links FROM links GROUP BY event_id) AS links ON events.id = links.event_id
		LEFT JOIN (SELECT event_id, GROUP_CONCAT(name) as images FROM images GROUP BY event_id) AS images ON events.id = images.event_id
		WHERE (events.year_1 >= :year_1 && (events.month_1 >= :month_1 || events.month_1 IS NULL) && (events.day_1 >= :day_1 || events.day_1 IS NULL)) AND (events.year_1 <= :year_2 && (events.month_2 <= :month_2 OR events.month_2 IS NULL) && (events.day_2 <= :day_2 OR events.day_2 IS NULL)) 
		ORDER BY events.year_1, events.month_1, events.day_1 asc
		LIMIT 30

Не получается составить условие таким образом, чтобы незаполненные поля (NULL) участвовали в выборе и нормально сортировались - asc, desc.
Плюс, первый элемент на UI не участвует в сортировке - asc, desc.
Поля заполняются по маске: dd.mm.yyyy || dd.mm.-yyyy
Может быть указана только как нижняя граница даты, так и только верхняя.
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы