|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Никак не могу составить запрос, есть таблица такого вида IdNomerCenaFl_Max1458100.00.F.245815.00.F.3394290.00.F.445855.00.F.5645100.00.F.678130.00.F.7645200.00.F.8458110.00.F. необходимо проставить в поле Fl_Max .T. только у тех значений Id, где Cena из одинаковых Nomer максимальна (если несколько одинаковых, можно брать максимальную по Id), т.е. получается это: IdNomerCenaFl_Max1458100.00.F.245815.00.F.3394290.00.T.445855.00.F.5645100.00.F.678130.00.T.7645200.00.T.8458110.00.T. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 14:22 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Нужно обязательно делать через UPDATE-SQL, или можно использовать SCAN? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 14:39 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Час промучился с апдейтом, ничего так и не получилось, сейчас попробую сканом, на первый взгляд получается громоздкая конструкция, скан по таблице, при этом внутри выбирать из той же таблицы первую запись отсортированную по Код: sql 1.
и сравнивать id, если совпало, то ставим .T. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 15:03 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
tor300, Если сканом, то не надо сравнивать Id... Надо проверять, если сменился номер: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 15:08 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 15:12 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
tor300Час промучился с апдейтом, ничего так и не получилось, сейчас попробую сканом, на первый взгляд получается громоздкая конструкция, скан по таблице, при этом внутри выбирать из той же таблицы первую запись отсортированную по Код: sql 1.
и сравнивать id, если совпало, то ставим .T. так не надо выбирать по одной, надо сравнивать Nomer с предыдущим. за один скан все делается Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 15:12 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Кстати, можно сделать всё и одним апдейтом: Код: sql 1. 2. 3. 4. 5.
но увлекаться такими особенностями не стОит ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 15:35 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Всем спасибо за варианты, сделал через скан. Таблица на входе не отсортирована, размер не очень большой, на производительность не сильно влияет, поэтому оставил пока так. Не пинать ! :-) Сам знаю что можно построить индекс, и потом в один проход заполнить, но надо было все срочно, одним запросом не получалось, поэтому был выбран данный вариант. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 17:44 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Хотя можно и поэкспериментировать, что будет быстрее, создать индекс по таблице и использовать вариант AndreTM , или использовать вариант Dima T с дополнительным курсором и апдейтами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 17:58 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
Быстрее будет через скан. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 18:37 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
tor300Хотя можно и поэкспериментировать, что будет быстрее, создать индекс по таблице и использовать вариант AndreTM , или использовать вариант Dima T с дополнительным курсором и апдейтами.Вариант AndreTM (с апдейтом) и вариант Dima T суть одно и то же, вообще-то ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 19:17 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
tor300Хотя можно и поэкспериментировать, что будет быстрее, создать индекс по таблице и использовать вариант AndreTM , или использовать вариант Dima T с дополнительным курсором и апдейтами. Замерь. Как мои замеры показывают самый тормоз - скан по таблице с индексом. Никогда бы не подумал пока сам не замерил. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 19:52 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
tor300Никак не могу составить запрос, есть таблица такого вида ... необходимо проставить в поле Fl_Max .T. только у тех значений Id, где Cena из одинаковых Nomer максимальна (если несколько одинаковых, можно брать максимальную по Id) ... А если так: Код: plaintext 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. 31.
Контрольный пример изменен, чтобы были повторы максимального значения у "nomer" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 22:34 |
|
Пометить записи с максимальной ценой в таблице
|
|||
---|---|---|---|
#18+
pioner-vUPDATE exp1 SET fl_Max=.T. ; From (Select z.nom1, z.cen1, MAX(k.id) as idm ; From exp1 k,; (Select nomer as nom1, MAX(cena) as cen1; From exp1 d ; group by nomer) z ; Where k.nomer=z.nom1 AND k.cena=z.cen1 ; group by z.nom1, z.cen1) r ; WHERE exp1.id=r.idm and exp1.nomer=r.nom1 AND exp1.cena=r.cen1 Типа этого и пытался изначально сделать, всем спасиб. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2013, 13:00 |
|
|
start [/forum/topic.php?fid=41&fpage=42&tid=1583068]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 339ms |
total: | 473ms |
0 / 0 |