|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Народ!!! Такая проблема: есть 2 таблицы, связь между ними обеспечивает kluch. теперь суть проблемы: в одной таблице много лишних записей. Нужно скопировать (увидеть хотя бы) только те, которые есть и в первой и во второй таблице. Пробовал что то вроде select karty.kluch, PROKANAL.KLUCH; from karty, prokanal; brow for karty.kluch = prokanal.kluch Ругается: command contains unrecognized phrase/keyword. Чего он там не понял/не признал, никак не могу понять. помогите, пожалуйста, мозг взрывается, 3 дня пытаюсь что то сделать, ничего не выходит.... Где туплю, никак не пойму. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 13:01 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
select karty.kluch, PROKANAL.KLUCH; from karty, prokanal; brow for where karty.kluch = prokanal.kluch ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 13:17 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Почитайте справку по команде 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 13:19 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Если надо те записи которых нет во второй таблице то так: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 13:20 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Dima T, select karty.kluch, PROKANAL.KLUCH; from karty, prokanal; where karty.kluch = prokanal.kluch выдает пустую таблицу. делаю index on kluch выдает 2 - 3 записи. ничего не пойму. kluch - это уникальная запись, по ней идет связь с другими таблицами. по идее все правильно, но не идет..... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:22 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
karty.kluch и prokanal.kluch какие типы полей и размер полей? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:27 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Grin, Но мне нужны не только ключи, мне нужны записи полностью. их должно быть около 8 000. структура таблицы имеют несколько столбцов и хреновы горы записей. все записи в обеих таблицах связываются по полю Kluch. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:29 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Dima Tkarty.kluch и prokanal.kluch какие типы полей и размер полей? размер разный, тип Character (символьный) запись имеет вид 39D0WTLKTAIGYLIAА 0 и генерируется программой в процессе работы как уникальный индекс. к стати по нему и идет индексация в модуле программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:38 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Zloi_87Dima Tkarty.kluch и prokanal.kluch какие типы полей и размер полей? размер разный, тип Character (символьный) запись имеет вид 39D0WTLKTAIGYLIAА 0 и генерируется программой в процессе работы как уникальный индекс. к стати по нему и идет индексация в модуле программы. Я так и подозревал, тогда так напиши: select karty.kluch, PROKANAL.KLUCH; from karty, prokanal; where prokanal.kluch = karty.kluch ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:43 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
По нормальному ключевое поле должно быть везде одинаковое по типу и размеру. Строки при по умолчанию (SET EXACT OFF) сравниваются до окончания правой, т.е. "qwerty" = "qwe" "qwe" != "qwerty" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:54 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Еще в зависимости от SET COLLATE большие и маленькие буквы могут быть равны. т.е. 'qwe' = 'QWE' Чтобы гарантированно получить точное совпадение до символа лучше так писать: left(prokanal.kluch, 123) == karty.kluch 123 - замени на ширину поля karty.kluch ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:59 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
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 все нормально показывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 15:56 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
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 все нормально показывает. Тут ничего не понял. Сессии с условиями не создаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 16:10 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
ВО Я ТУПЛЮ ПОД КОНЕЦ РАБОЧЕГО ДНЯ!!!! так он мне показывает только ключи, а их больше 2000, мне же надо увидеть и скопировать полностью записи, т.е. не просто один ключ, а то что он связывает!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 16:13 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Zloi_87ВО Я ТУПЛЮ ПОД КОНЕЦ РАБОЧЕГО ДНЯ!!!! так он мне показывает только ключи, а их больше 2000, мне же надо увидеть и скопировать полностью записи, т.е. не просто один ключ, а то что он связывает!!!! Все поля обозначаются звездочкой: select * ... или select karty.* ... или select PROKANAL.* ... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 16:18 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Dima T, Дим, я точно туплю. Просто я до этого создал пустую таблицу (надо было из 2х таблиц треью сотворить) и пытался сравнить пустую таблицу поэтому она и выходит пустая. То, что kluch имеет тип (С19) это точно. И везде он одинаков (в смысле тип). Теперь пишу copy to ...... for Procanal.kluch = Query.kluch он выдает мне 3 записи. Пробую вместо for ставить while вообще пустая таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 16:34 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Братаааааааан!!!!! Ты голова!!!! Второй раз мне уже помогаешь, в реале я те должен бооооольшой флакон коньяка!!! Вот как это выглядит в конечном варианте: 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 - голова!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 17:24 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
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 *сама операция А так не проще? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2011, 09:33 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
IgorNG, Как??? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2011, 11:23 |
|
сравнение двух таблиц в VisualFoxPro и копирование результатов
|
|||
---|---|---|---|
#18+
Zloi_87, селект не только на экран может вывести результат (как IgorNG написал) но и курсор или таблицу создать. Про селект тут почитай . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2011, 11:30 |
|
|
start [/forum/topic.php?fid=41&msg=37376514&tid=1584246]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 287ms |
total: | 428ms |
0 / 0 |