powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как объединить данее из двох таблиц в одну??
15 сообщений из 15, страница 1 из 1
Как объединить данее из двох таблиц в одну??
    #35574219
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два грида (две разные таблицы). С помощью Check я выбираю необходимые даные у этих таблиц. После выбора открываю третий грид, который по идеии должен иметь данные этих двих таблиц. Но выхоидт заминка и ничего не показывает:( Например, 1-й грид: pcddl.uname, 2-й: pcdd.namet. Желаемый результат 3-й: ggg.ob=(uname+namet)
Вот так это выгладет:

select * from pcddl where pw=.t. into table ggg
select * from pcdd where pk=.t. into table ggg
sele ggg
do form qel

А на форме qel находится этот 3-й Grid у которого RecordSource - ggg

я так понимаю нкжен програмный код объединения, но даже не знаю какие команды нужно использовать...помогите мне, пожалуйста:)
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35574450
new_userman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nensiЕсть два грида (две разные таблицы). С помощью Check я выбираю необходимые даные у этих таблиц. После выбора открываю третий грид, который по идеии должен иметь данные этих двих таблиц. Но выхоидт заминка и ничего не показывает:( Например, 1-й грид: pcddl.uname, 2-й: pcdd.namet. Желаемый результат 3-й: ggg.ob=(uname+namet)

Может быть попробовать так

select a.*, b.* from pcddl a, pcdd b
where a.pw=.t. and b.pk=.t.
into table ggg

должно сработать
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35574859
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понляла этот синтаксис к Fox5-му не подходит?
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35574907
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nensiя так понляла этот синтаксис к Fox5-му не подходит?
Подходит. Только надо понимать, что именно Вы делаете.

Синтаксис SELECT ... INTO - не добавляет записи к существующей таблице, а создает новую таблицу. Если таблица с таким именем уже существует, то она будет просто уничтожена. В результате, в таблице ggg будут данные только из второго запроса.

Вариант предложенный new_userman не вполне корректный. Это будет декартово произведение. Т.е. количество записей в выборке - это произведение количества отобранных записей из первой таблицы на количество отобранных записей из второй.

Чтобы ответить на Ваш вопрос необходимо уточнить по каким правилам Вы хотите объединить информацию из таблиц. Точнее, как Вы будете сопоставлять записи.

Из Вашего пояснения, что ggg.ob=(pcddl.uname+pcdd.namet) следует, что записи из этих двух таблиц как-то сопоставлены между собой. Как? Каким образом Вы определяете, что, например, первой записи из таблицы pcddl надо поставить в соответствие десятую запись из таблицы pcdd?

Учтите, что условие "по порядку следования" - не является условием. По той простой причине, что для Select-SQL самого понятия "порядок следования" - не существует. Данные сопоставляются по значению каких-либо полей.
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35574947
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ nensiя так поняла этот синтаксис к Fox5-му не подходит?
Подходит. Только надо понимать, что именно Вы делаете.



Я так подумала, так как видает ошибку о непризнаной команде "unrecognized command verb"
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35574968
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два грида (две таблици). Один: наименование и дата журналов, второй: наименование и дата газет. Я чеком выбираю нужные мне журналы и газеты в обоих гридах (и там есть Check и там). И в третем гриде должны отобразится название и журналов и газет, которые я отметила на флажке, в одном поле Grid3.
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35575157
new_userman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nensiЕсть два грида (две таблици). Один: наименование и дата журналов, второй: наименование и дата газет. Я чеком выбираю нужные мне журналы и газеты в обоих гридах (и там есть Check и там). И в третем гриде должны отобразится название и журналов и газет, которые я отметила на флажке, в одном поле Grid3.
При такой постановке вопроса мой первый ответ никак не подходит, я не совсем помню как это в фоксе делается(код может быть некорректный), но смысл такой

insert into table ggg from (select * from pcddl where pw=.t.)

insert into table ggg from (select * from pcdd where pc=.t.)

Кстати ВладимирМ, спасибо за замечание
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35575379
гость...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select * from pcddl where pw=.t. ;
union all ;
select * from pcdd where pk=.t. ;
into cursor ggg
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35577306
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось вот так:

select ggg
pk=.f.
pw=.f.
delete all
select pcdd
SCAN FOR pk=.t.
select ggg
LOCATE FOR pcdd.codcx=pcddl.cex
IF !FOUND()
append blank
REPLACE sp WITH ALLTRIM( pcdd.namcx)
ENDIF
select pcddl
locate FOR pcdd.codcx=pcddl.cex AND pw=.t.
DO WHILE FOUND( )
select ggg
REPLACE sp WITH ALLTRIM(sp)+" "+ALLTRIM(pcddl.uname)
select pcddl
CONTINUE
ENDDO
select pcdd

ENDSCAN
*!*set sysmenu to defaul
*!*susp
select ggg
do form qel

Спасибо ОГРОМНОЕ за вашу помощь!
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35579201
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный какой-то код...
Код: plaintext
1.
select ggg
LOCATE FOR pcdd.codcx=pcddl.cex
locate вообще-то работает с текущей таблицей, а условия из неактивных...

Попробовал я прогнать ваш код - ничего не понял. pcdd.codcx неуникальны? pcddl.cex неуникальны?

Зачем sp=sp+uname? при уникальных pcdd.codcx и pcddl.cex второй locate найдет не более одной записи...

Вообще, у меня ваш код (при уникальных pcdd.codcx и pcddl.cex) выдал имена из отмеченных
записей pcdd и к каждой из них, если есть отмеченный pcdd.codcx=pcddl.cex в таблице pcddl,
дописал еще имя из pcddl. Вам это надо?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select ggg
delete all

select padr(c.namcx, 100 ) from pcdd c ;
 where (c.codcx not in (select d.cex from pcddl d where d.pw=.t.)) AND c.pk=.t. ;
union all (select padr(trim(a.namcx)+" "+b.uname, 100 ) ;
 from pcdd a, pcddl b ;
  where a.codcx=b.cex AND a.pk=.t. AND b.pw=.t.) ;
order by  1  ;
into array tmp

select ggg
append from array tmp fields sp
dime tmp( 1 , 1 )
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35579941
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К AndreTM:
ОЧЕНЬ интересный подход, цивилизованый, я бы сказала! Намного лучше моего предыдушего!!!!!!!
СПАСИБО за вашу идею! :)
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35579992
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К AndreTMP:
...но есть одно НО! Если я не выберу значение из pcddl а такое может быть, мой код покажет читый грид-что не так пугает пользователя, а Ваш выдает ошибку "Variable "TMP" is not found"
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35582096
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nensiК AndreTMP:
...но есть одно НО! Если я не выберу значение из pcddl а такое может быть, мой код покажет читый грид-что не так пугает пользователя, а Ваш выдает ошибку "Variable "TMP" is not found"
Ах, да... начал забывать про особенности массивов в Фоксе :)
Надо вставить в начале кода
Код: plaintext
1.
2.
tmp=.f.
select ggg
...
и в конце поменять
Код: plaintext
1.
2.
3.
4.
5.
...
select ggg
if type('m.tmp')<>"L"
 append from array tmp fields sp
 tmp=.f.
endif
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35582126
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять задумался и приврал :)) Достаточно только изменить в конце:
Код: plaintext
1.
2.
3.
4.
5.
...
select ggg
if _TALLY> 0 
 append from array tmp fields sp
 dime tmp( 1 )
endif
...
Рейтинг: 0 / 0
Как объединить данее из двох таблиц в одну??
    #35585082
nensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как объединить данее из двох таблиц в одну??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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