Автор | Сообщение |
|
| |
Пост N: 228
Зарегистрирован: 03.12.08
|
|
Отправлено: 06.04.15 10:39. Заголовок: Как организовать объединение двух таблиц для просмотра
Имеется 2 таблицы (.DBF) . Обе имеют ключевое поле 'TEMP' C:20 . Остальные поля - различаются . Задача - организовать просмотр этих таблиц как-бы в одной . Поиск и сортировка на экране должна происходить как-будто обе эти таблицы объединены в один файл ...... Таблицы - SHARED и находятся на сервере . Индексные файлы - .CDX
|
|
|
Ответов - 12
[только новые]
|
|
|
| |
Пост N: 4673
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.04.15 12:15. Заголовок: количество записей в..
количество записей в них одинаково ?
|
|
|
|
| |
Пост N: 527
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.04.15 12:22. Заголовок: Softlog86 пишет: ..
Softlog86 пишет: цитата: | организовать просмотр этих таблиц как-бы в одной |
| три варианта на выбор 1 - временная база ( склейка физическая ) тут полный функционал возможен ( ПОИСК и СОРТИРОВКА ) Если записей не много - то это выход 2 - установить реляцию , по первой таблице бровс в который натыкать колонок из второй таблицы ( с соответствующим блоком выборки ) тут думаю ограничения на сортировку Slave таблицы 3 - Использовать любой RDD поддерживающий SQL ( запрос в одну строчку ). тут полный функционал возможен ( ПОИСК и СОРТИРОВКА )
|
|
|
|
| |
Пост N: 442
Зарегистрирован: 08.07.06
|
|
Отправлено: 06.04.15 12:24. Заголовок: SET RELATION TO tabl..
SET RELATION TO table1->temp INTO table2 Далее Browse/DBEDIT с полями: table1->p1, table1->p2, table2->s1, table2->s2 ...
|
|
|
|
| |
Пост N: 229
Зарегистрирован: 03.12.08
|
|
Отправлено: 06.04.15 15:11. Заголовок: Мне нужно чтоб данны..
Мне нужно чтоб данные из поля TEMP обоих бах были объединены в один список и этот список индексирован UPPER(TEMP) .....
|
|
|
|
| |
Пост N: 534
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.04.15 15:23. Заголовок: так что из Softlog8..
так что из Softlog86 пишет: цитата: | Задача - организовать просмотр этих таблиц как-бы в одной . |
| или цитата: | чтоб данные из поля TEMP обоих бах были объединены в один список |
| если второе - то во временную базу
|
|
|
|
| |
Пост N: 230
Зарегистрирован: 03.12.08
|
|
Отправлено: 06.04.15 15:54. Заголовок: Данные из этого стро..
Данные из этого строкового поля 'объединить' только для просмотра на экране ...... Но сортировано по UPPER(TEMP) .... Видимо кроме перелива во временную базу никак ....
|
|
|
|
| |
Пост N: 535
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.04.15 16:00. Заголовок: Softlog86 пишет: Ви..
Softlog86 пишет: цитата: | Видимо кроме перелива во временную базу никак .... |
| можно в массив, записей то сколько ?
|
|
|
|
| |
Пост N: 163
Зарегистрирован: 19.05.05
|
|
Отправлено: 06.04.15 16:51. Заголовок: Sergy пишет: SET RE..
Sergy пишет: цитата: | SET RELATION TO table1->temp INTO table2 |
| Если первая база открыта с индексом, данные ведь будут отсортиртиваны по полю ТЕМР, или я чего-то не понял, нужна еще какая-то дополнительная сортировка?
|
|
|
|
| постоянный участник
|
Пост N: 551
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.04.15 18:18. Заголовок: Softlog86 Попробуйт..
Softlog86 Попробуйте так: dbCreate('temp0', ({'TEMP', 'C', ..., 0}}) use temp0 alias TMP0 append from fileTemp1 append from fileTemp2 index on upper(TEMP) to temp0 UNIQUE go top use fileTemp1 alias TMP1 use fileTemp2 alias TMP2 sele TMP0 set relation to TEMP into TMP1 set relation to TEMP into TMP2 go top do while ! eof() ? TEMP, TMP1->FieldName, TMP2->FieldName, ... skip enddo // если надо др. сортировки индексы, делайте локально index on TMP1->FieldName to tmp0_1 index on TMP2->FieldName to tmp0_2
|
|
|
|
| постоянный участник
|
Пост N: 552
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.04.15 18:41. Заголовок: PS. если схема подхо..
PS. если схема подходит, то правильнее отрабатывать ? TEMP, iif(TMP1->(found()), TMP1->FieldName, ""), iif(TMP2->(found()), TMP2->FieldName, "")
|
|
|
|
| |
Пост N: 129
Зарегистрирован: 21.04.13
|
|
Отправлено: 06.04.15 18:45. Заголовок: Вопрос к SergKis
index on upper(TEMP) to temp0 UNIQUE Это же не гарантирует отображение обеих из двух записей , если ключ TEMP есть в обоих таблицах. Будет показан набор полей только одной из таблиц и пустая запись из другой, разве нет ? При совпадении ключа нужен не append , а replace
|
|
|
|
|
| постоянный участник
|
Пост N: 553
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.04.15 18:59. Заголовок: petr707 файл temp0 ..
petr707 файл temp0 проиндексирован UNIQUE, т.е. мы имеем одну запись (физически 2-е) и sele TMP0 set relation to TEMP into TMP1 set relation to TEMP into TMP2 связывают ОДНУ запись temp0 с двумя разными таблицами (на сервере) по полю TEMP, т.е. нам доступны как поля TMP1, так и поля TMP2, при условии found() == .T. для каждой из таблиц.
|
|
|
|