powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / сравнение двух таблиц в VisualFoxPro и копирование результатов
20 сообщений из 20, страница 1 из 1
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375084
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ!!! Такая проблема: есть 2 таблицы, связь между ними обеспечивает kluch. теперь суть проблемы: в одной таблице много лишних записей. Нужно скопировать (увидеть хотя бы) только те, которые есть и в первой и во второй таблице. Пробовал что то вроде
select karty.kluch, PROKANAL.KLUCH;
from karty, prokanal;
brow for karty.kluch = prokanal.kluch

Ругается: command contains unrecognized phrase/keyword. Чего он там не понял/не признал, никак не могу понять. помогите, пожалуйста, мозг взрывается, 3 дня пытаюсь что то сделать, ничего не выходит.... Где туплю, никак не пойму.
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375131
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select karty.kluch, PROKANAL.KLUCH;
from karty, prokanal;
brow for where karty.kluch = prokanal.kluch
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375134
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитайте справку по команде select sql

select k.kluch,count(p.kluch) as cnt;
from karty k left join prokanal p on k.kluch = p.kluch ;
group by k.kluch
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375137
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если надо те записи которых нет во второй таблице то так:
Код: plaintext
select * from karty where karty.kluch not in (select kluch from prokanal)
Работать такой запрос будет только в 9 фоксе
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375245
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

select karty.kluch, PROKANAL.KLUCH;
from karty, prokanal;
where karty.kluch = prokanal.kluch

выдает пустую таблицу. делаю index on kluch выдает 2 - 3 записи. ничего не пойму. kluch - это уникальная запись, по ней идет связь с другими таблицами. по идее все правильно, но не идет.....
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375251
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karty.kluch и prokanal.kluch какие типы полей и размер полей?
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375253
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin,

Но мне нужны не только ключи, мне нужны записи полностью. их должно быть около 8 000. структура таблицы имеют несколько столбцов и хреновы горы записей. все записи в обеих таблицах связываются по полю Kluch.
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375271
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tkarty.kluch и prokanal.kluch какие типы полей и размер полей?

размер разный, тип Character (символьный) запись имеет вид 39D0WTLKTAIGYLIAА 0 и генерируется программой в процессе работы как уникальный индекс. к стати по нему и идет индексация в модуле программы.
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375283
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zloi_87Dima Tkarty.kluch и prokanal.kluch какие типы полей и размер полей?

размер разный, тип Character (символьный) запись имеет вид 39D0WTLKTAIGYLIAА 0 и генерируется программой в процессе работы как уникальный индекс. к стати по нему и идет индексация в модуле программы.
Я так и подозревал, тогда так напиши:
select karty.kluch, PROKANAL.KLUCH;
from karty, prokanal;
where prokanal.kluch = karty.kluch
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375308
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По нормальному ключевое поле должно быть везде одинаковое по типу и размеру.
Строки при по умолчанию (SET EXACT OFF) сравниваются до окончания правой, т.е.
"qwerty" = "qwe"
"qwe" != "qwerty"
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375317
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще в зависимости от SET COLLATE большие и маленькие буквы могут быть равны. т.е.
'qwe' = 'QWE'
Чтобы гарантированно получить точное совпадение до символа лучше так писать:
left(prokanal.kluch, 123) == karty.kluch
123 - замени на ширину поля karty.kluch
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375458
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕще в зависимости от SET COLLATE большие и маленькие буквы могут быть равны. т.е.
'qwe' = 'QWE'
Чтобы гарантированно получить точное совпадение до символа лучше так писать:
left(prokanal.kluch, 123) == karty.kluch
123 - замени на ширину поля karty.kluch



смотри:

USE d:\rab\7_mes\21.06-20.07\karty.dbf IN 0 EXCLUSIVE
USE d:\rab\7_mes\procanal.dbf IN 0 EXCLUSIVE
select karty.kluch, procanal.kluch;
from karty, prokanal;
where left (procanal.kluch, 19) = karty.kluch

выдает пустую таблицу с 2 столбцами: kluch и exp_2 а в сессии появляется еще одна таблица с архитектурой таблицы prokanal, но тоже пустая. хотя делаешь сессию с условием procanal.kluch = karty.kluch все нормально показывает.
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375497
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zloi_87смотри:

USE d:\rab\7_mes\21.06-20.07\karty.dbf IN 0 EXCLUSIVE
USE d:\rab\7_mes\procanal.dbf IN 0 EXCLUSIVE
select karty.kluch, procanal.kluch;
from karty, prokanal;
where left (procanal.kluch, 19) = karty.kluch

выдает пустую таблицу с 2 столбцами: kluch и exp_2
exp_2 это данные из procanal.kluch, т.к. фокс не может сделать два поля kluch в одной таблице.
karty.kluch имеет тип С(19) ? Точно procanal.kluch больше 19-ти символов? Напиши размер полей kluch в обоих таблицах.
Еще я выше двойное равно писал - это для точного сравнения независимо от настроек.

Zloi_87 а в сессии появляется еще одна таблица с архитектурой таблицы prokanal, но тоже пустая.
Это какой-то другой код делает. Как называется таблица? поищи в коде по названию.

Zloi_87хотя делаешь сессию с условием procanal.kluch = karty.kluch все нормально показывает.
Тут ничего не понял. Сессии с условиями не создаются.
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375509
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВО Я ТУПЛЮ ПОД КОНЕЦ РАБОЧЕГО ДНЯ!!!! так он мне показывает только ключи, а их больше 2000, мне же надо увидеть и скопировать полностью записи, т.е. не просто один ключ, а то что он связывает!!!!
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375519
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zloi_87ВО Я ТУПЛЮ ПОД КОНЕЦ РАБОЧЕГО ДНЯ!!!! так он мне показывает только ключи, а их больше 2000, мне же надо увидеть и скопировать полностью записи, т.е. не просто один ключ, а то что он связывает!!!!
Все поля обозначаются звездочкой:
select * ...
или
select karty.* ...
или
select PROKANAL.* ...
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375546
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Дим, я точно туплю. Просто я до этого создал пустую таблицу (надо было из 2х таблиц треью сотворить) и пытался сравнить пустую таблицу поэтому она и выходит пустая. То, что kluch имеет тип (С19) это точно. И везде он одинаков (в смысле тип). Теперь пишу copy to ...... for Procanal.kluch = Query.kluch он выдает мне 3 записи. Пробую вместо for ставить while вообще пустая таблица.
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37375638
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Братаааааааан!!!!! Ты голова!!!! Второй раз мне уже помогаешь, в реале я те должен бооооольшой флакон коньяка!!!

Вот как это выглядит в конечном варианте:

select procanal.*, karty.kluch; * Выбираем что нам надо (из одной таблицы все, из другой только поле kluch)
from procanal, karty; * откуда это взять
where left (procanal.kluch, 19) == karty.kluch *сама операция
COPY TO d:\rab\itog\procanal.dbf FIELDS Query.kluch_a,Query.numkarte,Query.kodproc,Query.блаблабла *копируем итог в таблицу по столбцам, потому что в результате получается 2 ключа(надо же что то с чем то сравнивать)!!!!


Вот жизнь!!!! 3 дня мучился из за каких то 4 строчек.... Еще раз спасибо, Dima - голова!!!
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37376289
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zloi_87Братаааааааан!!!!! Ты голова!!!! Второй раз мне уже помогаешь, в реале я те должен бооооольшой флакон коньяка!!!

select procanal.kluch,procanal.numkarte,procanal.kodproc,procanal.блаблабла, karty.kluch AS kl_karty; * Выбираем что нам надо (из одной таблицы все, из другой только поле kluch)
from procanal, karty; * откуда это взять
where left (procanal.kluch, 19) == karty.kluch INTO TABLE d:\rab\itog\procanal *сама операция

А так не проще?
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37376503
Фотография Zloi_87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Как???
...
Рейтинг: 0 / 0
сравнение двух таблиц в VisualFoxPro и копирование результатов
    #37376514
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zloi_87, селект не только на экран может вывести результат (как IgorNG написал) но и курсор или таблицу создать. Про селект тут почитай .
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / сравнение двух таблиц в VisualFoxPro и копирование результатов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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