Существует такая таблица в mysql:
mysql> SHOW COLUMNS FROM grids;
+---------------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-----------+------+-----+---------+----------------+
| id | bigint(20)| NO | PRI | NULL | auto_increment |
| level | int(11) | NO | | NULL | |
| summ | int(11) | NO | | NULL | |
| activate_at | timestamp | YES | | NULL | |
+---------------+-----------+------+-----+---------+----------------+
Имеются такие данные:
mysql> SELECT * FROM grids;
+----+--------+--------+-------------------+
| id | level | summ | activate_at |
+----+--------+--------+-------------------+
| 6 | 1 |120 000 |2019-06-01 00:00:00|
| 7 | 2 | 30 000 |2019-06-01 00:00:00|
| 8 | 3 | 10 000 |2019-06-01 00:00:00|
| 9 | 4 | 5 000 |2019-06-01 00:00:00|
| 10 | 5 | 2 500 |2019-06-01 00:00:00|
| 11 | 6 | 1 250 |2019-06-01 00:00:00|
| 12 | 7 | 625 |2019-06-01 00:00:00|
| 13 | 8 | 313 |2019-06-01 00:00:00|
| 14 | 5 | 2 600 |2019-06-10 00:00:00|
| 15 | 4 | 33 000 |2019-06-26 00:00:00|
+----+--------+--------+-------------------+
Помогите выбрать актуальные данные за все level на нужную дату + отсортированные по level.
Т.е. если мне надо получить ценовую сетку на дату "2019-06-02" я должен получить такие данные:
+----+--------+--------+-------------------+
| id | level | summ | activate_at |
+----+--------+--------+-------------------+
| 6 | 1 |120 000 |2019-06-01 00:00:00|
| 7 | 2 | 30 000 |2019-06-01 00:00:00|
| 8 | 3 | 10 000 |2019-06-01 00:00:00|
| 9 | 4 | 5 000 |2019-06-01 00:00:00|
| 10 | 5 | 2 500 |2019-06-01 00:00:00|
| 11 | 6 | 1 250 |2019-06-01 00:00:00|
| 12 | 7 | 625 |2019-06-01 00:00:00|
| 13 | 8 | 313 |2019-06-01 00:00:00|
+----+--------+--------+-------------------+
Если надо получить данные на дату "2019-06-12", я должен получить данные:
+----+--------+--------+-------------------+
| id | level | summ | activate_at |
+----+--------+--------+-------------------+
| 6 | 1 |120 000 |2019-06-01 00:00:00|
| 7 | 2 | 30 000 |2019-06-01 00:00:00|
| 8 | 3 | 10 000 |2019-06-01 00:00:00|
| 9 | 4 | 5 000 |2019-06-01 00:00:00|
**| 14 | 5 | 2 600 |2019-06-10 00:00:00|**
| 11 | 6 | 1 250 |2019-06-01 00:00:00|
| 12 | 7 | 625 |2019-06-01 00:00:00|
| 13 | 8 | 313 |2019-06-01 00:00:00|
+----+--------+--------+-------------------+
И если мне надо получить текущие цены, т.е. на сегодня "2019-06-28":
+----+--------+--------+-------------------+
| id | level | summ | activate_at |
+----+--------+--------+-------------------+
| 6 | 1 |120 000 |2019-06-01 00:00:00|
| 7 | 2 | 30 000 |2019-06-01 00:00:00|
| 8 | 3 | 10 000 |2019-06-01 00:00:00|
**| 15 | 4 | 33 000 |2019-06-26 00:00:00|**
**| 14 | 5 | 2 600 |2019-06-10 00:00:00|**
| 11 | 6 | 1 250 |2019-06-01 00:00:00|
| 12 | 7 | 625 |2019-06-01 00:00:00|
| 13 | 8 | 313 |2019-06-01 00:00:00|
+----+--------+--------+-------------------+
Простая выборка с сортировкой:
SELECT * FROM grids WHERE activate_at <= *date* AND activate_at IS NOT NULL ORDER BY level
Например, чтобы выбрать все записи до сегодняшней даты надо написать:
SELECT * FROM grids WHERE activate_at <= now() AND activate_at IS NOT NULL ORDER BY level
Если можно привязаться к id (т.е. они увеличиваются со временем, а не идут в разнобой) то должен подойти такой запрос:
SELECT level, summ, activate_at, id
FROM grids
WHERE
id in (select max(id) from grids where activate_at <= now() group by level)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть таблица users и user_phones (один ко многому), как получить список где каждый user имел бы только один номер ?
Суть: переносил сайт с одной CMS на другую (с самописной на Modx)Спустя некоторое время, потребовалось доперенести некоторые данные