powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор записей по дате
12 сообщений из 12, страница 1 из 1
Выбор записей по дате
    #40037918
savsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Есть таблица уроков с датами на месяц вперед. С полями

les_id
les_date
les_name

Нужно выбрать уроки, не новее двух уроков вперед от текущей даты.

Сейчас делаю в три шага. Сначала определяю первую минимальную дату урока, которая больше равна сегодня. Затем вторую минимальную дату, которая больше первой минимальной даты. А потом собственно выбираю уроки.

Или делаю в два шага. Сначала выбираю все уроки с датой меньше сегодня и заношу их во временную таблицу. Потом выбираю все уроки с датой больше равно сегодня, обратной сортировкой и LIMIT 2. И соответственно добавляю их.

Пробовал делать одним запросом, но получаю ошибку на некорректное использование UNION, ORDER BY и LIMIT.

Есть ли возможность сделать это одним запросом?
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40037925
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savsoft
Нужно выбрать уроки, не новее двух уроков вперед от текущей даты.
Это, блин, как?

Дайте лучше пример - CREATE TABLE (а не это описание списка полей), INSERT INTO (десяток записей), значение текущей даты, и требуемый результат запроса на этих данных с пояснениями.
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40037948
savsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE consult4_basec.les (
  les_id int(11) NOT NULL AUTO_INCREMENT COMMENT 'Id',
  les_date date NOT NULL COMMENT 'Дата',
  les_time time DEFAULT NULL COMMENT 'Начало урока',
  les_status int(11) NOT NULL COMMENT 'Статус',
  PRIMARY KEY (les_id)
)
ENGINE = INNODB,
CHARACTER SET utf8,
COLLATE utf8_general_ci,
COMMENT = 'Уроки';



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
INSERT INTO les(les_id, les_date, les_time, les_status) VALUES
(1, '2021-01-11', NULL, 0),
(2, '2021-01-15', NULL, 0),
(3, '2021-01-22', NULL, 0),
(4, '2021-01-25', NULL, 0),
(5, '2021-01-27', NULL, 0),
(6, '2021-01-29', NULL, 0),
(7, '2021-02-01', NULL, 0),
(8, '2021-02-05', NULL, 0);



Код: sql
1.
2.
SELECT les_id, les_date
FROM les ORDER BY les_date DESC;



Этот запрос показывает все уроки. Если сегодня 22.01.21 и сегодня есть урок, то нужно выбрать уроки до 25.01.21 включительно. А завтра показывать уроки до 27.01.21 включительно. ТО есть один ближайший (включая сегодня) и один наперед.
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038028
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SELECT *
FROM les
WHERE les_date >= @today
ORDER BY les_date LIMIT 2;


fiddle

Ну и в рабочем запросе вместо переменной ( @today ) использовать CURRENT_DATE .
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038061
savsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Код: sql
1.
2.
3.
4.
SELECT *
FROM les
WHERE les_date >= @today
ORDER BY les_date LIMIT 2;


fiddle

Ну и в рабочем запросе вместо переменной ( @today ) использовать CURRENT_DATE .


Но здесь только две записи, а нужно и все предыдущие. Как результат

Код: sql
1.
2.
3.
4.
SELECT *
FROM les
WHERE les_date >= @today
ORDER BY les_date LIMIT 2;


+
Код: sql
1.
2.
3.
SELECT *
FROM les 
WHERE les_date < date(NOW());


c ORDER BY les_date DRSC
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038091
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну UNION ALL же, ё моё...
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038103
savsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Ну UNION ALL же, ё моё...


Так не работает же, ругается на ORDER BY и LIMIT.
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038116
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savsoft
Так не работает же, ругается на ORDER BY и LIMIT.
Показывайте SQL-код. Гадать на кофейной гуще никто не будет.
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038130
savsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
savsoft
Так не работает же, ругается на ORDER BY и LIMIT.
Показывайте SQL-код. Гадать на кофейной гуще никто не будет.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT *
FROM les
WHERE les_date >= date(now())
ORDER BY les_date LIMIT 2
  UNION ALL
SELECT *
FROM les 
WHERE les_date < date(NOW());



Пишет

Код: sql
1.
Incorrect usage of UNION and ORDER BY
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038139
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savsoft,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT * FROM
  (SELECT *
      FROM les
   WHERE les_date >= date(now())
     ORDER BY les_date LIMIT 2) t1

UNION ALL
  
SELECT * FROM
   (SELECT *
      FROM les 
    WHERE les_date < date(NOW())) t2;
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038152
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
( SELECT *
  FROM les
  WHERE les_date >= CURRENT_DATE
  ORDER BY les_date LIMIT 2 )
UNION ALL
( SELECT *
  FROM les 
  WHERE les_date < CURRENT_DATE)
ORDER BY les_date  DESC



Читать UNION Clause до полного понимания.
...
Рейтинг: 0 / 0
Выбор записей по дате
    #40038173
savsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, разобрался.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор записей по дате
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]