Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение таблицы , данными из других таблиц по уникальному полю / 5 сообщений из 5, страница 1 из 1
24.06.2015, 15:02
    #38991728
Anastassie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы , данными из других таблиц по уникальному полю
Добрый день. Работаю с 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

Подскажите, где ошибка в запросе , или может есть другой более грамотный вариант?

в прикрепленном файле схематическое отображение исходных таблиц и результирующей.
...
Рейтинг: 0 / 0
24.06.2015, 15:37
    #38991761
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы , данными из других таблиц по уникальному полю
left join надо, но FPD его не умеет

С помощью set relation примерно так
Код: sql
1.
2.
3.
4.
5.
6.
sele table2 
set order to kod
sele table1 
set rela to kod into table2
copy fields table1.kod, table2.zn to result.dbf
...
...
Рейтинг: 0 / 0
24.06.2015, 17:16
    #38991873
Anastassie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы , данными из других таблиц по уникальному полю
спасибо, вроде получилось, но не до конца. Не могу понять, что я неправильно делаю. С двумя таблицами все отработало отлично, когда попыталась добавить третью в таблице 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, как ее дочернюю?
...
Рейтинг: 0 / 0
24.06.2015, 20:13
    #38992011
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы , данными из других таблиц по уникальному полю
AnastassieС двумя таблицами все отработало отлично, когда попыталась добавить третью в таблице rezult обнулились все значения второй.
Хэлп почитать надо.
set rela to сбрасывает предыдущий. Поэтому надо явно указывать чтоб не сбрасывал
Код: sql
1.
2.
3.
4.
sele table1
set rela to kod into table2
set rela to kod into table3 additive
...
...
Рейтинг: 0 / 0
25.06.2015, 17:02
    #38992948
Anastassie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы , данными из других таблиц по уникальному полю
Спасибо
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение таблицы , данными из других таблиц по уникальному полю / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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