powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обновить только первые записи в группе упорядоченных записей
8 сообщений из 8, страница 1 из 1
Обновить только первые записи в группе упорядоченных записей
    #32234175
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы Tbl1(поля Eksp,Date,T1,T2) и Tbl2(поля T1,T2)
Можно ли с помощью SQL заполнить только первые строки полей T1,T2 таблицы Tbl1, в соответствии с некоторым порядком сортировки order by Eksp,Date из полей таблицы Tbl2,
т.е. что-то типа:
Код: plaintext
1.
2.
update (select distinct * from Tbl1  inner join Tbl2 on Tbl1.Eksp=Tbl2.Eksp and Tbl1.Date=Tbl2.Date  order by Eksp,Date  )
SET Tbl1.T1=Tbl2.T1, Tbl1.T2=Tbl2.T2

Но этот запрос не работает,
Кто - что посоветует!?
...
Рейтинг: 0 / 0
Обновить только первые записи в группе упорядоченных записей
    #32234223
VIG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Твой запрос и не будет работать.
Непонятно что такое and Tbl1.Date=Tbl2.Date - ведь в соответствии с описанием таблиц в Tbl2 нет поля Date .В order by желательно указывать не только поле но и таблицу,т.к. может быть неоднозначность,если поля в разных
таблицах называются одинаково,и уж совсем непонятно,что такое
в соответствии с некоторым порядком сортировки order by Eksp,Date из полей таблицы Tbl2
Так что если можно ,то пожалуйста поподробнее и попонятнее :)
...
Рейтинг: 0 / 0
Обновить только первые записи в группе упорядоченных записей
    #32234512
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон - торопился .
Таблица Tbl2 тоже имеет поля Eksp и Date, но в отличие от таблицы Tbl1, в которой находятся группы строк с одним Eksp и Date , в таблице Tbl2 для каждой совокупности Eksp и Date находится только одна строка с T1,T2 .

Если делать это позаписно , то Нужно отсортировав Tbl1 по Eksp и Date, сканировать с начала Tbl1 и заносить в поля T1,T2 каждой первой отличной от предыдущих по Eksp или Date записи поля T1 ,T2 соответствующей записи (по Eksp и Date ) из Tbl2 , а в отстальные поля Tbl1 (не первые в группе строк Eksp,Date) заносить Null.
Т.е получить , что-то , вроде :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Tbl2
Eksp Date           T1   T2
 1       01 . 02 . 2003     10      21 
 2       01 . 02 . 2003     102    231 
 3       02 . 02 . 2003     101    221 
 3       03 . 02 . 2003     13     12 
Tbl1
Eksp Date           T1   T2   
 1       01 . 02 . 2003     10      21 
 1       01 . 02 . 2003    Null  Null
 1       01 . 02 . 2003    Null  Null
 1       01 . 02 . 2003    Null  Null
 2       01 . 02 . 2003     102    231 
 2       01 . 02 . 2003    Null  Null
 2       01 . 02 . 2003    Nul l Null
 3       02 . 02 . 2003     101    221 
 3       02 . 02 . 2003    Null  Null
 3       03 . 02 . 2003     13     12 
 3       03 . 02 . 2003    Null  Null
...
Рейтинг: 0 / 0
Обновить только первые записи в группе упорядоченных записей
    #32234770
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите люди, - невозможно что-ли такое в MSJEt SQL ?
...
Рейтинг: 0 / 0
Обновить только первые записи в группе упорядоченных записей
    #32235801
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите люди, - невозможно что-ли такое в MSJEt SQL ?
...
Рейтинг: 0 / 0
Обновить только первые записи в группе упорядоченных записей
    #32235825
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне не удалось. Может быть "VIG" знает?
...
Рейтинг: 0 / 0
Обновить только первые записи в группе упорядоченных записей
    #32235846
am (a_mitin)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в таблицу Tbl1 добавляешь поле ID Autonumber (надо же как то отличать пары Eksp Date друг от друга)
После задачу можно выполнить например так:
создаем 2 запроса
- первый обновляет всё (поля T1 T2 ) в табл.1 в Null
- второй обновляет только минимальный ID по паре Eksp Date
например вот так:
UPDATE tbl1 INNER JOIN Tbl2 ON (tbl1.Date = Tbl2.Date) AND (tbl1.Eksp = Tbl2.Eksp) SET tbl1.T1 = [Tbl2].[T1], tbl1.T2 = [Tbl2].[T2]
WHERE tbl1.ID = (SELECT Min(ID) FROM tbl1 t1 WHERE t1.Eksp=tbl1.Eksp AND t1.Date=tbl1.Date)


Если я конечно правильно понял задачу.
...
Рейтинг: 0 / 0
Обновить только первые записи в группе упорядоченных записей
    #32236689
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, спасибо, помогло.
Никак не могу толком изучить SQL - сколько раз сталкивался с тем , когда алгоритм позаписной обработки кодируется в 5 минут , для придумывания SQL варианта требуется пол-дня, если не больше !

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


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