|
Заполнение таблицы , данными из других таблиц по уникальному полю
|
|||
---|---|---|---|
#18+
Добрый день. Работаю с FoxPro2.6. Есть 7 баз данных, в одной из них - перечень уникальных кодов, порядка 2000 записей, остальные 6 - содержат, кроме кода, совпадающего с кодом в первой базе, поле ZN (значение). В каждой из этих 6 таблиц количество записей разное, в одной 10, в другой - 150 и т.д. Нужно получить итоговую таблицу, в которой бы один раз встречался код из первой таблицы и 6 полей zn1,zn2....zn6, значения следующих 6 таблиц. пыталась добавить хотя бы данные из 2 таблиц, не вышло table1 - таблица с кодами. select distinct a.kod, iif(a.kod=b.kod, b.zn,0.00) as zn1, iif (a.kod=c.kod, c.zn, 0.00 ) as zn2 from table1 a, table2 b, table3 c into dbf itog во-первых, запрос выполняется слишком долго, а, во-вторых записи дублируются. То есть для одного кода выводит несколько строчек первая когда, условие а.kod=b. kod (а.kod=c.kod) выполняется, вторая - когда не выполняется. При этом если таблица со значениями не содержит код из первой таблицы, в итоговой базе все нормально - одна строка - код и два поля с 0.00 Подскажите, где ошибка в запросе , или может есть другой более грамотный вариант? в прикрепленном файле схематическое отображение исходных таблиц и результирующей. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2015, 15:02 |
|
Заполнение таблицы , данными из других таблиц по уникальному полю
|
|||
---|---|---|---|
#18+
left join надо, но FPD его не умеет С помощью set relation примерно так Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2015, 15:37 |
|
Заполнение таблицы , данными из других таблиц по уникальному полю
|
|||
---|---|---|---|
#18+
спасибо, вроде получилось, но не до конца. Не могу понять, что я неправильно делаю. С двумя таблицами все отработало отлично, когда попыталась добавить третью в таблице rezult обнулились все значения второй. sele table2 set order to kod sele table3 set order to kod sele table1 set rela to kod into table2 set rela to kod into table3 copy fields table1.kod, table2.zn2, table3.zn3 to result.dbf есть возможность set rela написать 6 раз, и в таблицу result добавить zn2...zn6 или нужно использовать, rezult как новую родительскую базу и добавлять table 3, как ее дочернюю? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2015, 17:16 |
|
Заполнение таблицы , данными из других таблиц по уникальному полю
|
|||
---|---|---|---|
#18+
AnastassieС двумя таблицами все отработало отлично, когда попыталась добавить третью в таблице rezult обнулились все значения второй. Хэлп почитать надо. set rela to сбрасывает предыдущий. Поэтому надо явно указывать чтоб не сбрасывал Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2015, 20:13 |
|
|
start [/forum/search_topic.php?author=Telemost&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 493ms |
total: | 662ms |
0 / 0 |