|
|
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы Tbl1(поля Eksp,Date,T1,T2) и Tbl2(поля T1,T2) Можно ли с помощью SQL заполнить только первые строки полей T1,T2 таблицы Tbl1, в соответствии с некоторым порядком сортировки order by Eksp,Date из полей таблицы Tbl2, т.е. что-то типа: Код: plaintext 1. 2. Но этот запрос не работает, Кто - что посоветует!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 14:54 |
|
||
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
Твой запрос и не будет работать. Непонятно что такое and Tbl1.Date=Tbl2.Date - ведь в соответствии с описанием таблиц в Tbl2 нет поля Date .В order by желательно указывать не только поле но и таблицу,т.к. может быть неоднозначность,если поля в разных таблицах называются одинаково,и уж совсем непонятно,что такое в соответствии с некоторым порядком сортировки order by Eksp,Date из полей таблицы Tbl2 Так что если можно ,то пожалуйста поподробнее и попонятнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 15:15 |
|
||
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
Пардон - торопился . Таблица 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 17:42 |
|
||
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
Помогите люди, - невозможно что-ли такое в MSJEt SQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 00:47 |
|
||
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
Помогите люди, - невозможно что-ли такое в MSJEt SQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 17:47 |
|
||
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
Мне не удалось. Может быть "VIG" знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 18:02 |
|
||
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
в таблицу 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) Если я конечно правильно понял задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 18:18 |
|
||
|
Обновить только первые записи в группе упорядоченных записей
|
|||
|---|---|---|---|
|
#18+
Да, спасибо, помогло. Никак не могу толком изучить SQL - сколько раз сталкивался с тем , когда алгоритм позаписной обработки кодируется в 5 минут , для придумывания SQL варианта требуется пол-дня, если не больше ! Но вот в еще чем беда - SQL вариант для данного случая работает в 5-6 раз медленнее , чем позаписная обработка ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 14:38 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32235825&tid=1679911]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 312ms |

| 0 / 0 |
