Запрос на отображение записей с тремя критериями датыMySql

Форум по Mysql
Ответить
Anonymous
 Запрос на отображение записей с тремя критериями даты

Сообщение Anonymous »

Мне нужно извлечь по 3 записи одновременно из таблицы для отображения в форме, где люди могут подписаться на одно или любое из трех совпадений, отображаемых в форме.
У меня есть таблица MySQL, настроенная с датами, и сведения в этой таблице представляют собой три поля даты (хранятся в формате ГГГГ-ММ-ДД), которые определяют, отображается ли совпадение для регистрации в форме или нет.

Код: Выделить всё

+-------+-----------------+-----------------+----------------+---------+
|    id |    match_date   |  release_date   |  removal_date  | gender  |
+-------+-----------------+-----------------+----------------+---------+
|    1  |   2026-01-09    |  2026-01-01     |   2026-01-08   | Male    |
|    2  |   2026-02-06    |  2026-01-22     |   2026-01-11   | Female  |
|    3  |   2026-04-02    |  2026-02-22     |   2026-03-18   | Male    |
|    4  |   2026-02-16    |  2026-01-22     |   2026-02-09   | Female  |
+-------+-----------------+-----------------+----------------+---------+
match_date (Дата проведения матча, которая не должна отображаться в форме регистрации после того, как дата матча прошла.)
release_date (дата, начиная с которой запись будет отображаться в форме регистрации)
removal_date (Дата, когда матч исчезнет из поля зрения при регистрации) форма)

Код: Выделить всё

CREATE TABLE `competition_matches` (
`id` int(11) NOT NULL,
`gender` varchar(250) DEFAULT NULL,
`match_date` date DEFAULT NULL,
`release_date` date DEFAULT NULL,
`remove_date` date DEFAULT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `competition_matches` (`id`, `match_date`, `release_date`, `remove_date`,`gender`) VALUES
('1', '2026-01-09', '2026-01-01', '2026-01-08', 'Male'),
('2', '2026-02-06', '2026-01-22', '2026-01-31', 'Female'),
('3', '2026-04-02', '2026-02-22', '2026-03-18', 'Male'),
('4', '2026-02-16', '2026-01-22', '2026-02-09', 'Female');
Пока у меня есть этот запрос, который, похоже, работает неправильно...

Код: Выделить всё

SELECT *
FROM competition_matches
WHERE match_date   >= CURRENT_DATE()
AND release_date >= CURRENT_DATE()
AND remove_date  >= CURRENT_DATE()
AND gender='Male'
ORDER by match_date ASC LIMIT 3;
Поэтому мне нужно отображать записи только там, где
  • Match_date находится либо сегодня, либо в будущем.
  • Release_date сработала. IE, дата сегодня или в будущем.
  • Remove_date не была достигнута.
После наступления даты удаления запись не должна отображаться.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -criterias
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»