|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите решение задачки: Имеются 2 таблицы одинаковой структуры но в структуре содержаться Memo поля. Необходимо оптимально перенести уникальные записи одной таблицы в другую. Пытался воспользоваться функцией Код: sql 1.
сругалась. ОК. Почитал, про её несовместимость с memo и тд... Хотел воспользоваться Alltrim, но он собака, обрезает не концевые пробелы, а вообще по средине слова, причем на Код: sql 1.
возвращает корректное значение. Есть ли какие-то механизмы, достаточно просто получить такие данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 19:40 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
T1gRa_NTно он собака, обрезает не концевые пробелы, а вообще по средине слова, причем на Код: sql 1.
возвращает корректное значение.Подозреваю, что в вашем случае фокс длины результирующих полей определяет по результатам обработки первой обработанной записи. Попробуйте прокастить с явным указанием длины результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 19:52 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
T1gRa_NTДобрый день! Подскажите решение задачки: Имеются 2 таблицы одинаковой структуры но в структуре содержаться Memo поля. Необходимо оптимально перенести уникальные записи одной таблицы в другую. Будем считать, что это есть условие задачи. Надо только уточнить термин "перенести". Надеюсь, я правильно понял и сие означает копировать/добавить записи из этой таблицы в другую таблицу.Пытался воспользоваться функцией Код: sql 1.
сругалась. ОК. Почитал, про её несовместимость с memo и тд... 1. Это не функция, а запрос. 2. Это запрос никак никуда и ничего не переносит и переносить не может. 3. Этот запрос выбирает записи уникальные в пределах одной таблицы. А как они соотносятся со второй таблицей? Уникальность в пределах обоих таблиц нужна или нет? 4. Если я правильно понял условия, то пока вырисовывается один запрос вида Код: sql 1.
Хотел воспользоваться Alltrim, но он собака, обрезает не концевые пробелы, а вообще по средине слова, причем на Код: sql 1.
возвращает корректное значение.Этот пассаж вообще непонятен. Или где-то есть условия по переносу исключительно через массив? Какое отношение это имеет к переносу? Есть ли какие-то механизмы, достаточно просто получить такие данные?Переформулируйте вопрос. Ибо непонятно какое здесь слово основное вопросительное. "Есть ли", "достаточно", "получить" или "такие"? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 20:51 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
tanglirПодозреваю, что в вашем случае фокс длины результирующих полей определяет по результатам обработки первой обработанной записи. Попробуйте прокастить с явным указанием длины результата. Хм, на сколько понял слово "прокастить": определить максимальную длину текста в memo без концевых пробелов и явно её указать в запросе? правильный проходящий.Будем считать, что это есть условие задачи. Надо только уточнить термин "перенести". Надеюсь, я правильно понял и сие означает копировать/добавить записи из этой таблицы в другую таблицу. Да, именно так, добавлять уникальные записи из таблицы1 в таблицу2. правильный проходящий.1. Это не функция, а запрос. 2. Это запрос никак никуда и ничего не переносит и переносить не может. 3. Этот запрос выбирает записи уникальные в пределах одной таблицы. А как они соотносятся со второй таблицей? Уникальность в пределах обоих таблиц нужна или нет? 4. Если я правильно понял условия, то пока вырисовывается один запрос вида Код: sql 1.
1. Да это запрос, который создает массив и заполняет его уникальными записями из таблицы 1. А потом простейшим Код: sql 1.
все записи со всеми полями добавляются в таблицу 2. 2. И не должен, он выбирает уникальные записи по всем полям и заносит их в массив. 3.Никак, таблица2 или пустая или записи из первой добавляются в конец таблицы2. Уникальность нужна только по записям таблицы1. 4.К большому сожалению как я и писал выше distinct не работает если select проходит по таблице с memo полями. http://www.foxclub.ru/rhproject/project/html/8a629568-55b2-43df-b0e9-8e9f8f527c2f.htm правильный проходящий.Этот пассаж вообще непонятен. Или где-то есть условия по переносу исключительно через массив? Какое отношение это имеет к переносу? Условия исключительно через массив нету, пытался уменьшить писанину. правильный проходящий.Переформулируйте вопрос. Ибо непонятно какое здесь слово основное вопросительное. "Есть ли", "достаточно", "получить" или "такие"? Главное слово "Есть ли", ну и хотелось бы не сильно замороченный способ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 22:56 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
T1gRa_NT, самый незаморочный способ уже показан. Еще раз: insert into table 2 select .... Просто в нем каждое мемо-поле обернуть в rtrim(left(поле, 254)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 23:23 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
T1gRa_NTtanglirПодозреваю, что в вашем случае фокс длины результирующих полей определяет по результатам обработки первой обработанной записи. Попробуйте прокастить с явным указанием длины результата. Хм, на сколько понял слово "прокастить": определить максимальную длину текста в memo без концевых пробелов и явно её указать в запросе? Сделать фиксированный размер поля. Как вариант Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 05:41 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Это то понятно, а вот как при этом не потерять 255 и тд символы? Ведь ради них memo поля и создавал( и все прелесть полных наименований теряется... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 06:45 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Можно просто отсортировать таблицу по контрольной сумме мемо-поля, scan`ом пройтись по ней и сравнивать предыдущее с текущим, вставлять если не совпало Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 07:26 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Пока есть 2 варианта реализации: 1. Код: sql 1.
Вычисляем контрольную сумму по всем полям включая memo по алгоритму CRC32 - быстро, легко но не дает 100% уникальности. Хотя если на малых объемах (у меня бывает не более 60 записей в таблице1), то думаю будет работать корректно. 2. Сканированием закидывать все поля в переменные Код: sql 1.
и проверять есть ли такие сочетания в таблице2, если не встретились, то добавлять запись. Долго, но надежно, при увеличении кол-во записей в таблице2 растет время работы. Дорогие коллеги, какой вариант посоветуете? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 07:37 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Dima T, пока писал своё сообщение, написали Вы) У Вас получалась так сказать компиляция моих вариантов) Единственное, Вы тягаете не memo, а их контрольные значения, но да, в вашем варианте используется только 1 таблица, спасибо большое, буду смотреть) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 07:45 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Лучше объединить оба варианта: сначала по Sys(2017) а там где оно совпало для нескольких записей дополнительно сравнить только их между собой. PS Недоверяю Sys(2017), подробностей не помню, помню что какие-то неадекватные результаты он выдавал. Заменил на Sys(2007) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 07:56 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Тут 18376355 напутал немного, sys(2007) надо вместо 2017 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 08:16 |
|
Уникальные записи с Memo полями
|
|||
---|---|---|---|
#18+
Dima T, спасибо, воспользовался Вашим вариантом. Вроде пока отрабатывает корректно. Dima TМожно просто отсортировать таблицу по контрольной сумме мемо-поля, scan`ом пройтись по ней и сравнивать предыдущее с текущим, вставлять если не совпало Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 14:36 |
|
|
start [/forum/topic.php?fid=41&msg=39096068&tid=1582221]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
4ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 412ms |
0 / 0 |