powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение таблицы , данными из других таблиц по уникальному полю
5 сообщений из 5, страница 1 из 1
Заполнение таблицы , данными из других таблиц по уникальному полю
    #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
Заполнение таблицы , данными из других таблиц по уникальному полю
    #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
Заполнение таблицы , данными из других таблиц по уникальному полю
    #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
Заполнение таблицы , данными из других таблиц по уникальному полю
    #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
Заполнение таблицы , данными из других таблиц по уникальному полю
    #38992948
Anastassie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение таблицы , данными из других таблиц по уникальному полю
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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