|
История изменений
|
|||
---|---|---|---|
#18+
как бы с помощью запросов выбрать все пары изменений? Например, есть таблица изменений цен вида Дата1 Товар Цена1 Дата2 Товар Цена2 Дата3 Товар Цена3 надо получить таблицу со старыми и новыми значениями цен такого вида Дата2 Товар Цена1 Цена2 Дата3 Товар Цена2 Цена3 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2009, 13:04 |
|
История изменений
|
|||
---|---|---|---|
#18+
Примерно так Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2009, 15:33 |
|
История изменений
|
|||
---|---|---|---|
#18+
Спасибо, Алексис! Работает. Но признаюсь честно, я ни**я не понял как. Смутили агрегатные функции MAX() по цене (с остальным всё понятно), т.к. цена может измениться и в меньшую сторону. Поигравшись с изменениями цен в большую и меньшую, убедился, что действительно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2009, 16:21 |
|
История изменений
|
|||
---|---|---|---|
#18+
MAX- тут нужен если на одну дату несколько цен . Тут можно уже играться какую брать - максимальную, минимальную или среднюю Если на дату цена одна все MAX можно убрать Выполни по частям - станет понятнее тут главное получить цепочку дат , т.е. текущую - предыдущая этим занимаеться этот кусок Код: plaintext 1.
выбором предыдущей даты занимаеться подзапрос Код: plaintext
тут по товару и предыдущей дате находим собственно цену по товару на дату Код: plaintext 1.
Обрати внимание на Left Join . Конечно поменяв на Inner мы избавимся от записей с NULL в "старой цене" но тогда потеряем товары имеющие только одну цену. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2009, 17:39 |
|
История изменений
|
|||
---|---|---|---|
#18+
КонецЦиклакак бы с помощью запросов выбрать все пары изменений? Например, есть таблица изменений цен вида Дата1 Товар Цена1 Дата2 Товар Цена2 Дата3 Товар Цена3 надо получить таблицу со старыми и новыми значениями цен такого вида Дата2 Товар Цена1 Цена2 Дата3 Товар Цена2 Цена3 У меня подобный вопрос как выбрать цену на определенную дату - заранее известна код IDTOVAR из таблички товаров соответствует кодам ТОВАР1 ... из таблички истории цены Табличка истории цены ДАТА1 ТОВАР1 ЦЕНА1 ДАТА2 ТОВАР1 ЦЕНА2 ДАТА3 ТОВАР1 ЦЕНА3 ДАТА1 ТОВАР2 ЦЕНА1 ДАТА2 ТОВАР2 ЦЕНА2 ДАТА1 ТОВАР3 ЦЕНА1 ДАТА1 ТОВАР4 ЦЕНА1 ДАТА2 ТОВАР4 ЦЕНА2 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 20:32 |
|
История изменений
|
|||
---|---|---|---|
#18+
vorvv, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 21:00 |
|
История изменений
|
|||
---|---|---|---|
#18+
Анатолий Широковvorvv, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Не вижу связи с табличкой товаров Может я не правильно изложил вопрос Необходимо создать запрос который из таблицы товаров берет все записи а из таблички истории берет цену для всех товаров !!! на указанную дату структура таблиц товары IDTOVAR IDNAME и тд истории цены HDATES IDTOVAR TCENA Следует зметить что, в истории ведется дата не за каждый день!!! Буду очень благодарен!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2012, 09:21 |
|
История изменений
|
|||
---|---|---|---|
#18+
SELECT t1.tovar ,t1.date,t2.date, t2.cena,t1.cena ; from ( SELECT tovar ,date,MAX(cena) as cena,(SELECT MAX(date) date from table1 t3 where t3.tovar=table1.tovar AND t3.date<table1.date ) as d2 FROM table1 GROUP BY tovar,date) t1 ; left join ( SELECT tovar,date,MAX(cena) as cena FROM table1 t group BY t.tovar,t.date) t2 on t2.tovar= t1.tovar and t2.date = t1.d2 ; ORDER BY 1,2 Вот сдесь что то есть, но мне мен надо каждой записи товара одну запись с истории цены на указанную дату ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2012, 09:25 |
|
История изменений
|
|||
---|---|---|---|
#18+
select a.itemid, a.date, a.cost ; from price as a ; where a.date = ; (select max(b.date) from price as b where b.itemid = a.itemid and b.date <= ldDate) Кстати это запрос работает, но очень долго!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2012, 11:36 |
|
История изменений
|
|||
---|---|---|---|
#18+
vorvv , а если не использовать sql-вские методики? Вернее, использовать CTE? То есть, просто сделать временную таблицу вместо внутреннего селекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 04:39 |
|
История изменений
|
|||
---|---|---|---|
#18+
AndreTM vorvv , а если не использовать sql-вские методики? Вернее, использовать CTE? То есть, просто сделать временную таблицу вместо внутреннего селекта? Над этим я думал. Но что бы сделать временную табличку опять таки надо выбирать записи у которых дата <= указанной и каждому товару одна запись Если есть идеи или знаете как - подскажите!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 10:25 |
|
История изменений
|
|||
---|---|---|---|
#18+
vorvvкак выбрать цену на определенную дату - заранее известна код IDTOVAR из таблички товаров соответствует кодам ТОВАР1 ... из таблички истории цены Если у автора с русским языком порядок, то как я понимаю надо ОДНО число, т.е. цену на конкретный товар. При наличии индекса "Товар+Дата" решается с помощью команды SEEK. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 12:56 |
|
|
start [/forum/topic.php?fid=41&msg=35814075&tid=1583731]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 396ms |
0 / 0 |