|
|
|
|
|
для: Слух
(18.01.2010 в 20:48)
| | Вы напишите юнион на десяток тысяч товаров с годичной выборкой цен - тогда можно будет сравнивать. | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2010 в 19:34)
| | Да уж, по времени выполнения практически 1в1 в с юнион, главный плюс конечно же не нужно явно указывать ид товара. Спасибо большое) | |
|
|
|
|
|
|
|
для: heed
(18.01.2010 в 20:13)
| | Не, ну речь то о том, чтоб всю аналитику спихнуть на SQL...
Понятно, что на стороние приложения можно хоть слоника купить запрограммировать.
Впрочем, если расставить адекватные индексы вроде UNIQUE item_date(item_id, date_time) , то может статься, не так уж прожорливо всё будет... | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2010 в 19:34)
| | Как вариант можно просто всё выбирать отсортированным по ключам и датам
SELECT * FROM pr GROUP BY item_id, date_time DESC;
|
и потом в цикле анализировать и выводить только нужное.
, но тоже с минусом , в том что результат запроса будет большим
особенно если там цены начиная с конца прошлого века | |
|
|
|
|
|
|
|
для: Слух
(18.01.2010 в 19:12)
| | Вот основа:
SELECT a.item_id , d1, MAX(b.date_time) AS d0
FROM
(SELECT item_id, MAX(date_time) AS d1
FROM goods GROUP BY item_id ) AS a
LEFT JOIN goods b ON a.item_id = b.item_id AND b.date_time < d1
GROUP BY a.item_id, d1
|
Дальше к ней подсоединяются по ключам item_id и date_time копии таблицы для определения цен товара.
Запрос не самый легкий в плане ресурсов. | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2010 в 19:00)
| | >что означает id и что означает item_id?
id это идентификатор записи в таблице, примари кей
а item_id это идентификатор товара
>В частности, здесь запрос для единицы и двойки - это один и тот же товар?
разный товар
Примерные данные в таблице, может поможет
id date_time item_id price
1 2009-11-01 1 100
2 2009-11-01 2 54
3 2009-11-02 1 101
4 2009-11-02 2 53
5 2009-11-03 1 105
6 2009-11-03 2 52
|
Нужно получить
Item_id date price
1 2009-11-03 105
2 2009-11-03 52
1 2009-11-02 101
2 2009-11-02 53
|
Либо просто 2 записи но с еще одним полем например предыдущая цена, либо просто значение поднялась цена или опустилась(наверно еще может остатся такой же) | |
|
|
|
|
|
|
|
для: Слух
(18.01.2010 в 18:38)
| | что означает id и что означает item_id?
В частности, здесь запрос для единицы и двойки - это один и тот же товар? | |
|
|
|
|
|
|
| Может неправильно выразился но поиск ничего не дал.
Есть таблица с такими полями
id date_time item_id price
|
Грубо говоря цены меняются раз в сутки, как можно вывести одним запросом текущие цены(самые последние по дате), и признак, цена упала или поднялась? Я додумался только до такого варианта
(select * from table where item_id = 1 order by date_time desc limit 2)
union
(select * from table where item_id = 2 order by date_time desc limit 2)
|
Это удобно если предметов мало и количество меняется редкто, чтобы не лезть часто в код. Но если предметов много, и меняются часто? Возможно ктото уже сталкивался с подобными ситуациями.
Да у меня там конечно же в php будет дополнительная обработка и сравнение цены, но это уже ньюансы, данные то у нас все есть чтобы понять выросла цена или опустилась.
ЗЫ забыл указать, нужно вывести цены для всех предметов сразу | |
|
|
|
|