Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определение минимальной цены на предыдущую дату / 7 сообщений из 7, страница 1 из 1
26.02.2014, 11:01:51
    #38572575
dewlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение минимальной цены на предыдущую дату
Есть 2 таблицы
Товары c_i
id id_product price id_cs1 2 50 12 2 40 23 2 50 3
Поставки cs
id dt1 2012-02-222 2012-02-233 2012-02-234 2012-02-24
Необходимо найти минимальную цену на предыдущую дату поставки, те для поставки 4 предыдущая дата '2012-02-23' а минимальная цена 40
определение предыдущей даты сделал вот так,получается как то громоздко,а как определить мин цену? Буду рад любым советам и помощи, заранее спасибо!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT 
MAX(t1.dt_fact)
FROM	
	(
		SELECT
			c_i.id, c_i.id_cs, dt_fact, dt_plan, price_fact, id_product
		FROM
			cs
		INNER JOIN c_i ON cs.id = c_i.id_cs
	) AS t1,
		
	(
		SELECT
			c_i.id, c_i.id_cs, dt_fact, dt_plan, price_fact, id_product
		FROM
			cs
		INNER JOIN c_i ON cs.id = c_i.id_cs
	) AS t2,
WHERE
	t1.id != t2.id
AND t1.id_product = t2.id_product
AND t1.dt_fact <= t2.dt_fact
GROUP BY t1.id
...
Рейтинг: 0 / 0
26.02.2014, 11:32:44
    #38572629
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение минимальной цены на предыдущую дату
для конкретной поставки - вот один из вариантов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT min(price)min_prev_price
FROM c_i
WHERE id_cs IN (
   SELECT id FROM cts s
   WHERE s.dt = (
      SELECT MAX(dt) dt FROM cts
      WHERE dt < (SELECT dt FROM cts WHERE id = 4)
      )
   )


Для всех поставок:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select s.*,
   (SELECT min(price)
   FROM c_i
   WHERE id_cs IN (
      SELECT id FROM cts 
      WHERE dt = (
         SELECT MAX(dt) dt FROM cts
         WHERE dt < s.dt
         )
      )
   )min_prev_price
from cts s

iddtmin_prev_price12012-02-22NULL22012-02-2350.000032012-02-2350.000042012-02-2440.0000
...
Рейтинг: 0 / 0
26.02.2014, 11:49:32
    #38572665
dewlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение минимальной цены на предыдущую дату
Cygapb-007, Большое спасибо!=)
...
Рейтинг: 0 / 0
26.02.2014, 13:40:26
    #38572841
dewlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение минимальной цены на предыдущую дату
Cygapb-007,
а как быть со случаем когда в поставке несколько товаров?

id id_product price id_cs1 2 50 12 2 40 24 1 30 23 2 50 3
...
Рейтинг: 0 / 0
26.02.2014, 13:48:19
    #38572856
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение минимальной цены на предыдущую дату
dewlad ,

а что получиться-то должно?
...
Рейтинг: 0 / 0
26.02.2014, 14:04:14
    #38572884
dewlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение минимальной цены на предыдущую дату
Cygapb-007, я упустил в задаче момент с несколькими товарами в одной поставке, те для каждого товара из поставки должна быть своя мин цена
Для таблиц

id id_product price id_cs1 2 50 12 2 40 24 1 30 23 2 50 3

id dt1 2012-02-222 2012-02-233 2012-02-234 2012-02-24
должно получиться
id_product min_pre_price2 null2 501 null240
...
Рейтинг: 0 / 0
26.02.2014, 16:03:04
    #38573120
dewlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение минимальной цены на предыдущую дату
Cygapb-007, разобрался вроде, спасибо большое за помощь!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определение минимальной цены на предыдущую дату / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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