|
|
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Господа! Возник вопрос, даже два. Есть база данных с двумя идентичными таблицами. Структура таблиц такова: ID - Numeric Length 9 - автоинкрементный счетчик OKPO - Character Length 20 -код предприятия NAME - Character Length 42 -название предприятия Число символов в строке OKPO может быть разное, а должно быть ровно 10. Поэтому вопрос первый: --как привести все строки в столбце OKPO к одинаковому виду: в строке должно быть ровно 10 символов, если символов 9,то в начале строки пишем один ноль, если символов 8 - два нуля и т.п. Вопрос номер два --как найти данные, которые есть в одной таблице и нет в другой, результат вывести в третью таблицу. Надеюсь объяснил понятно, если нет - спрашивайте. Большое спасибо всем, кто прочитал, а двойное - всем, кто ответит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 17:12 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Какая версия VFP ? С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 17:52 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
? padl(alltrim(tt),10,'0') select ff from tt t where not exist (select ff from tt1 t1 where t.ff=t1.ff) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 17:53 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Какая версия VFP ? VFP 6.0 ? padl(alltrim(tt),10,'0') select ff from tt t where not exist (select ff from tt1 t1 where t.ff=t1.ff) Попробую. С уважением, Londinium ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2006, 17:59 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
londiniumID - Numeric Length 9 В этом справочнике в чем смысл ID? Да еще и 9-ти разрядного? londiniumOKPO - Character Length 20 Зачем 20? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2006, 19:32 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
В этом справочнике в чем смысл ID? Да еще и 9-ти разрядного? сделал на всякий случай. Excel поставил такой тип поля, я не стал с ним спорить, хотя можно. Зачем 20? Перегонял в dbf через Excel, он так поставил, а править dbf-файл в 16-ричном редакторе - руки трусятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2006, 13:16 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
londinium...править dbf-файл в 16-ричном редакторе - руки трусятся. Дык у тебя же "VFP 6.0" в наличии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2006, 15:18 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Дык у тебя же "VFP 6.0" в наличии... Сейчас да, а когда начинал ковыряться с этими двумя файлами - и близко не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2006, 19:54 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Еще раз здравствуйте! Что-то ничего не выходит, делаю так: Код: plaintext 1. 2. 3. 4. 5. С уважением, Londinium ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2006, 21:36 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2006, 22:26 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Hi londinium! > в строке должно быть ровно 10 символов, если символов 9,то в начале строки > пишем один ноль, если символов 8 - два нуля и т.п. А если в строке 11 символов? Ты бы для начала провел анализ твоей таблицы на MAX длинну осмысленного текста в полях: SELECT MAX(LEN(ALLTRIM(OKPO))) MaxLen1, ; MAX(LEN(ALLTRIM(NAME))) MaxLen2 FROM YourTable INTO CURSOR tmp1 ? tmp1.MaxLen1, tmp1.MaxLen2 И лишь если в результате получится что MaxLen1 <=10 то и пробовал "усекать" это поле. Иначе не избежать проблем - PADL() помимо того что "дополняет" строку до нужной длинны, ещё и отсекает "лишнюю" часть - а там у тебя могут быть данные. Про то как "сравнивать таблицы" IMHO неприлично спрашивать - столько раз уже обсуждалось - пользуйся поиском :( Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 14:17 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Igor KorolyovА если в строке 11 символов? Длина этого кода для юр.лиц - 8, для физ.лиц - 10. Больше быть не должно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 16:11 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Длина этого кода для юр.лиц - 8, для физ.лиц - 10. Больше быть не должно... Именно так. Про то как "сравнивать таблицы" IMHO неприлично спрашивать - столько раз уже обсуждалось - пользуйся поиском :( Согласен. Больше не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 19:54 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Еще раз здравствуйте! Если еще не всех запарил, то прошу помощи дальше: Записи, которых нет в таблице 1, а есть в таблице р ищу так: Код: plaintext 1. Затем создаю таблицу так: Код: plaintext 1. Код: plaintext 1. Ради интереса проверил такой вопрос на FireBird - все отработало нормально. Где у меня кривые руки?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 17:37 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
ну ты б еще на сиквеле проверил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 18:57 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
вот пример Код: plaintext 1. 2. 3. 4. 5. 6. зачем перед создаешь таблицу ну выбери в курсор, затем если нужен файл на диск ну пиши copy to ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 19:03 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
ну ты б еще на сиквеле проверил Не понял, а что, нельзя? SELECT *,0 AS checked, SPACE(100) AS cError, SPACE(254) AS cIfOper, ; space(3) as type_doc ; FROM c_j_link ; WHERE c_j_link.rn=c_imns_06.rn AND summa>=c_imns_06.summa ; and c_j_link.link not in (select link_doc from c_imns_06 where not empty(c_imns_06.link_doc)) ; INTO TABLE c_j_temps Спасибо, поробую модифицировать под свои нужды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2006, 19:15 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Hi londinium! > insert into WhatNotExistInEmpl(select * from p where p.okpo not in(select > okpo from 1)); > Ругается на Syntax Error, В 6-ке такого типа запросы не поддерживаются (в 9-ке уже можно, но и там думаю на "внешние" скобки будет ругаться, а заодно и "своеволие" полей стоит устранить - т.е. явно указывать в какие поля вставка идёт и из каких полей выборка). В 6-ке можно через APPEND FROM (DBF("SourceCursor")) перегнать данные из одного курсора в другой - ну или как указал alex прямо через SELECT ... INTO TABLE создать таблицу (её потом можно через ALTER TABLE изменить по необходимости). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 00:46 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Hi Redrik! Я понимаю что "по смыслу" там должно быть не более 10 - но если в таблице размерность 20 то кто его знает что там реально - может там "мусор/пробелы" между цифирью затесался - так что всё-же стоит проверить, и если что, то ввести дополнительную обработку - ну там например убить все пробелы (не только "крайние") в поле, или вообще отфильтровать все символы кроме цифр (двойной CHRTRAN() тут поможет). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 00:46 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! В 6-ке такого типа запросы не поддерживаются (в 9-ке уже можно, но и там думаю на "внешние" скобки будет ругаться, а заодно и "своеволие" полей стоит устранить - т.е. явно указывать в какие поля вставка идёт и из каких полей выборка). Спасибо за совет. Для надежности, наверное, укажу поля явно. Заодно, чтобы не подумали плохого, объясню, это сравнение пишется на работе, тут в книжки особо не посмотришь. Дома нашел в книжке вариант вставки в таблицу и все заработало (вроде бы). Я понимаю что "по смыслу" там должно быть не более 10 - но если в таблице размерность 20 то кто его знает что там реально - может там "мусор/пробелы" между цифирью затесался Такого, вроде, быть не должно: данные не введены непосредственно, а получены путем выгрузки из баз. Если знаете, на госслужбе иногда появляется желание сверить базы данных, вот оно и возникло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 09:39 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
londinium...на госслужбе... Hello, коллега! ;-) Это что ж за задачку ты решаешь? Может скооперируемся? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 16:54 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Hello, коллега! ;-) Это что ж за задачку ты решаешь? Может скооперируемся? :-) Приветствую! Задача, скорее всего, типовая: руководство пожелало сравнить базы данных предприятий налоговой, пенсионного фонда и службы занятости. Поскольку каждая контора имеет свое ПО, естественно написанное под разные СУБД и т.д, то вернулся к жизни старый добрый dbf-формат, вот и сравниваю разные dbf, вылавливая предприятия. Плюс к тому, основной мой вид деятельности - поддержка пользователей(мышь не шевелится, сеть отвалилась, как в Word-е сделать то-то), то и возникают у меня стандартные вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 19:44 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
londinium...базы данных предприятий налоговой, пенсионного фонда и службы занятости... Чьёрт побьери!!! Ты в какой "конторе" трудишься???????????????? Информация в объёме "баз данных" в каждой из этих "контор" абсолютно закрыта! Я "Службу" далеко "посылаю", когда у них зуд начинается насчёт инфы более, чем по одному "субъекту"... ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 21:04 |
|
||
|
Сравнить две таблицы dbf
|
|||
|---|---|---|---|
|
#18+
Чьёрт побьери!!! Ты в какой "конторе" трудишься???????????????? В службе занятости, а что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 21:32 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33826299&tid=1591278]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
138ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 428ms |

| 0 / 0 |
