|
|
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Есть таблица с 4-мя полями: Dt,KodP,Summa2,Summa Нужно для всех групп по KodP заменить поле Summa c наименьшим значением в группе поля Dt на значение поля Summa2 . Можно ли и как это сделать одним запросом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 12:45 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Так что - никто не знает, или никто не понял ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 15:50 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Нельзя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 15:51 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Если "для всех групп по KodP", то что такое "в группе поля Dt"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 17:32 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Саныч, совершенно неважно что это такое. Как только видишь слова "Группы", "Сумма", "Наименьшее значение" и т.п. - так сразу и понимаешь что запрос группировочный. Даже выборку запихнуть в один запрос, то обновляемым это запрос сделать не получится (в аксесе). Так что на вопрос "Можно ли это сделать одним запросом" ответ "Нельзя" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 17:37 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Лох, я понял. Ты поймал один признак, по которому НЕТ, и сделал вывод, что весь ответ НЕТ. Я тоже так поступил, только я поймал признак, по которому ДА: я вижу, что автор что-то сформулировал не так. Это дает надежду, что ему вообще нужно не то, что мы читаем в его вопросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 17:41 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Ааа, ну если автор сформулировал не так - тогда конечно же ответ: ДА! Разумеется можно! Даже очень просто! Как только поймем - что, так сразу и сделаем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 17:44 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Я, извиняюсь, уже свалил с работы в это время, отвечаю из дома: Правда, не совсем понятно, что ,собстно, не понятно , могу только то - же другими словами : В таблице есть группы записей с одинаковым значением поля KodP, а поле Dt в кажой такой группе имеет разные значения ( и конечно , какое-то из них будет наименьшее ). Ну, вот , и надо в таких записях (где находятся эти наименьшие значения поля Dt - в каждой группе такая запись у меня единственная ) в поле Summa заменить значение на значение поля Summa2 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2003, 23:43 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Это я извиняюсь. :^) Я был не прав. Автор все сформулировал нормально, а я читал не так. И тогда прав Лох - одним запросом ничего не получится. Значит, надо программой. Например, так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. При этом если эти поля не числовые, то в тех местах, где я написал Str, надо писать по-другому (где-то на этом форуме это есть - как вставлять разные константы в SQL). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2003, 00:07 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Все извиняются, тогда я тоже извинюсь... что попробую поспорить с авторитетным мнением завсегдатаев... ;) Вот запросец, чуток название полей изменил, но надеюсь понятно будет: UPDATE Таблица1 AS t1 SET t1.Sum1 = [t1].[Sum2] WHERE (((t1.Dt) In (SELECT Min(t2.Dt) AS [Min-Dt] FROM Таблица1 t2 WHERE t2.Kod = t1.Kod))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2003, 00:41 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Да уж, был неправ. Слово "сумма" смутило разум. Позор на мою лохматую голову. З.Ы. Извинений не дождетесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2003, 01:05 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Можно и мне внести свою скромную лепту Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2003, 01:17 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Доброе утро всем.Решил на трезвую голову поделиться своими мыслями. 2 am(a_mitin) Классный запрос! Я почему то с "детства" недолюбливал коррелированные запросы.Очевидно был неправ. Но мне кажется ,что здесь можно обойтись без in, т.е сделать Код: plaintext 1. 2. ИМХО на больших наборах должно работать быстрее. 2 yuniki А нужен ли тебе UPDATE ? Например запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. возвращает то ,что нужно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2003, 10:07 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Блин. Два раза не прав в одном топике - это перебор... :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2003, 12:12 |
|
||
|
Как обновить поле с наименьшим значением другого поля в группе записей
|
|||
|---|---|---|---|
|
#18+
Я почему то с "детства" недолюбливал коррелированные запросы.Очевидно был неправ. Да, коррелированные запросы не всегда приемлемое решение из-за вопросов производительности. Но часто вполне нормальное. А по поводу того что в данном случае = будет быстрей чем In... Я в этом сомневался, стало интересно, поэтому решил проверить Вот скриптик, который написал для тестирования (писал для Ms SQL Server, для Access лень было планы запросов смотреть). Код: 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. После этого смотрим планы выполнения запросов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И видим что они абсолютно одинаковые. Вот такие: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Значит говорить о том, что один запрос выполняется быстрее другого оснований вроде бы нет. Кстати, по поводу скорости коррелированных запросов - сравнил производительность того запроса, который ты привел первый раз (некоррелированного) с этим коррелированным. Так вот, судя по полному Cost запроса, который показывает Execution Plan - он (некоррелированный) медленней примерно в 86 раз (84,8 против 0,982) ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2003, 12:57 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32212318&tid=1680427]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
78ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 416ms |

| 0 / 0 |
