powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / восстановление состояния на дату
2 сообщений из 2, страница 1 из 1
восстановление состояния на дату
    #36150012
bydlocoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица user_products с товарами. в нее периодически загружается прайс, при этом цены за предыдущие периоды нужно хранить в базе и использовать. для этого завел табличку
Код: plaintext
1.
2.
3.
4.
`user_prices` (
  `user_product_id`
  `value` float default
  `time` timestamp 
)

если нужно сделать отчет за какую-нибудь дату, создаю временную таблицу с ценами за эту дату:
Код: plaintext
1.
2.
3.
CREATE TEMPORARY TABLE `current_user_prices` (
			`user_product_id`
			`value`	
			);

и наполняю ее ценами с датой, которая меньше или равна требуемой дате и при этом нет более новых значений цены. получается, выбираются цены действующие на требуемую дату.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
			INSERT INTO current_user_prices
			SELECT t1.user_product_id, t1.value
			FROM `user_prices` AS t1
			WHERE t1.time <= '2009-01-01'
			AND NOT 
			EXISTS (				
				SELECT * 
				FROM `user_prices` AS t2
				WHERE t2.time <=  '2009-01-01'
				AND t1.user_product_id = t2.user_product_id
				AND t2.time > t1.time
			)
потом временную current_user_prices джойню с user_products и выполняю запросы. выглядит криво, но кое-как работает.

но это если за конкретную дату. а если нужно посчитать что-нибудь за период (если бы в user_products хранилась одна цена для всех дат, все получилось бы сделать это одним запросом), то все совсем плохо: не приходит ничего в голову, кроме как:
1)для каждой даты периода проделывать такие операции, делать отдельные запросы и получать данные за отдельные даты, а собирать все вместе скриптом
2)в current_user_prices добавить поле даты и забить данными на каждую дату периода
это все кажется крайне неправильным, может можно решить проблему как-то лучше?
...
Рейтинг: 0 / 0
восстановление состояния на дату
    #36150225
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант Шаблон: Периодические сведения
ускорит чтение периодически изменяющихся данных, но замедлит запись. Для редко меняющихся данных.
С уважением, Naf
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / восстановление состояния на дату
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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