powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запосом (некоторые строки перенести в другое поле)
15 сообщений из 15, страница 1 из 1
Помогите с запосом (некоторые строки перенести в другое поле)
    #32487844
Zlaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Есть таблица вида:
ID - целое,
Val1 - текст,
Val2 - текст
И данные в ней:
ID Val1 Val2
----------- -------- --------
1 aaa NULL
2 00:05 NULL
3 bbb NULL
4 ccc NULL
5 rrr NULL
6 00:11 NULL
7 ggg NULL
8 00:12 NULL
9 www NULL
10 ddd NULL
11 00:13 NULL
12 eee NULL
13 fff NULL
.............................
Соответственно нужно построить запрос, чтобы проапдейтить записи в Val2 соответствующем временем (например по условию like "00:*") из Val1. т.е. должно получиться примерно так:
ID Val1 Val2
----------- -------- --------
1 aaa NULL
2 00:05 NULL
3 bbb 00:05
4 ccc 00:05
5 rrr 00:05
6 00:11 NULL
7 ggg 00:11
8 00:12 NULL
9 www 00:12
10 ddd 00:12
11 00:13 NULL
12 eee 00:13
13 fff 00:13
В принципе, кое какие решения есть, но уж очень коряво получается. Есть у кого нибудь хорошая идея?
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32487854
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проходом по рекордсету это тривиально решается двумя десятками строк кода. Обязательно запрос? Религия такая?
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32487861
Zlaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице может быть под миллион записей, думаю что запросом должно быть быстрее. Да и просто интересно :-)
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32487870
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ниче не понял что надо получить. Ты не мудри, ты по-русски скажи
З.Ы. Запросом быстрее явно не будет
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32487877
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zlaya Да и просто интересно :-)
Бог в помощь. :)
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488031
N_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос на апгрейт не получается но на выборку может помочь
Запрос Z на основе таблицы T
Код: plaintext
1.
2.
3.
SELECT t2.ID, t2.Val1
FROM t AS t2
WHERE (((t2.Val1) Like  "00 *"))
ORDER BY t2.ID;

Запрос на выборку
Код: plaintext
1.
SELECT t.ID, t.Val1, (Select last(Val1) from  z  where z.ID<=t.ID) AS vvv
FROM t;
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488106
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Аксе можно примерно так сделать :)

Запрос1
Код: plaintext
1.
2.
3.
SELECT Таблица1.id, Таблица1.v1
FROM Таблица1
WHERE (((Таблица1.v1) Like  "00 *"));


Запрос2
Код: plaintext
1.
2.
3.
SELECT t1.id +1  AS id1, t1.v1, Min(t2.id) -1  AS id2
FROM Запрос1 AS t1 LEFT JOIN Запрос1 AS t2 ON t1.id < t2.id
GROUP BY t1.id, t1.v1;


Запрос3
Код: plaintext
1.
2.
3.
SELECT t1.id, t1.v1, z1.v1 as v2
FROM Запрос2 AS z1 RIGHT JOIN Таблица1 AS t1
ON t1.id between z1.id1 and Nz(z1.id2,  1000000 );


Запрос3 выводит, то что надо получить - т.е. его можно смело использовать для Update таблицы :)

P.S.: Nz поставил млн. - если мало, то можно увеличить :)
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488125
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээээ
А кто-нибудь пробовал эти запросы запускать в аксесе на миллионе записей?
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488138
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет :)
На миллионе не пробовал :) (пробовал на 12 )
Наверное Акс уйдет в себя на долго :)

Это я так :)
Как говорил наш препод: "Если вам нужна бесконечность, то возьмите миллиард!"
А скромненько, решил миллионом отделаться :)
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488191
N_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой запрос на выборку - меньше минуты(первые записи).
Проверку условия при пробегании по лимону записей рекордсетом, тоже надо тестить, хотя несомненно я бы так и делал.
А если условие меняется, тогда надо писать аналог "like"?
Да и при больших объемах узким местом может стать буферизация данных системой на медленный диск.
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488302
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой запрос на выборку - меньше минуты(первые записи).
Когда дождешься последних - скажешь?
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488443
2 N_A
last в акесе низзя (см по форуму)

если б акес понимал стандартные конструкции при UPDATE, то что-то типа

Код: plaintext
1.
2.
3.
4.
UPDATE t AS t0 SET t0.Val2 = (SELECT Top  1  (t.Val1) AS LVal1
FROM t
WHERE t.id<[t0].[id]  AND t.Val1 Like  "00 :*"
ORDER BY  t.id DESC ;)
WHERE (t0.Val1) Not Like  "00 :*";

могло б помочь.
а так - по вашей технологии возможен только Select (треба соответствующей правки).

т.к. задача заведомо курсорная - прогонка рекордсета будет наибыстрейшей (если есть сервер - то прогонка по курсору на его стороне).
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488447
last()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в смысле, last низзя в ВАШИХ целях. (не то он вертает)
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488451
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
last в акесе низзя
А в других местах его и нет
...
Рейтинг: 0 / 0
Помогите с запосом (некоторые строки перенести в другое поле)
    #32488458
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у мну ЛАСТА нет :)
И третий запрос легко переделывается в UPDATE.

Правда он от этого быстрее не становиться :(
Но ведь и вопрос стоял, не как быстрее сделать, а как сделать запросом

ЗЫ: Никогда Last (First) не юзал - ну ненравятся они мне - нет определенности :(
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запосом (некоторые строки перенести в другое поле)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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