|
|
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Бухгалтер ответила на какой-то вопрос "налогоплательщика" и он создал абсолютно одинаковые кортежи для каждой записи, т.е. в таблице есть дубликат у каждой строки. База на FP, самого его нет, но есть просмоторщик таблиц. Как при помощи SQL ЗАПРОСА УДАЛИТЬ дубли. Нет различающихся критериев, при помощи которых можно было бы это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 08:06 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вот, структуру вытянул, может как-то за индексы зацепиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 08:31 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
если ID - уникальное поле, тогда сделать довольно просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:20 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
в том то и дело что нет, я плохо знаю FP, но знаю немного БД, и где здесь (фрагмент выше) указано что ID уникальный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:26 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:29 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Пока писал DML запрос, уже ответили, что поле id не уникальное. Может сделать уникальное поле, удалить дубли а потом грохнуть это поле? Главное не навредить и создать бэкап ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:36 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
там ид одинаковые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:41 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
а кто его знает как потом приложение отреагирует, получится ли создать уникальное поле, многие СУБД не позволяют делать это пока не будет удалено несоответствие в записях, а их более 400 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:43 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Найди номер записи с которой начинаются дубли Delete from MyTable Where RecNo()>XXX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:52 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Попробуй так. У меня этот модуль как раз исправляет базы от таких случаев, только потом после того как получишь курсор с дублирующими записями нужно удалить их ручками через команду DELETE. В принципе используя эту идею можешь написать под себя модулек или SQLзапрос. && Сколько дублирующих записей = DoubleRecord('FM_ZATR' - имя базы, в которой нужно найти дублирующие записи 'KD_FIRM, Zatr_dt, Kd_zatr, InpTip' - перечень полей, которые не должны быть дублируемые ) сам вызов функции && Сколько дублирующих записей Dbl_rec = DoubleRecord('FM_ZATR', 'KD_FIRM, Zatr_dt, Kd_zatr, InpTip') *----------------------------------------------------------------------- * * Чтобы показать дублирующиеся записи, можно использовать SQL-запрос * показанный ниже. В результате получится курсор содержащий каждую группу * дублирующихся записей, показанную один раз и количество повторений в таблице * этой записи. * * если дублирующих записей нет - закрываем курсор, * если есть - курсор остается * FUNCTION DoubleRecord PARAMETERS NameBase, StrWithNamePole LOCAL d_r_t_a, D_Rec D_Rec = 0 d_r_t_a = SELECT() SELECT &StrWithNamePole ; FROM &NameBase ; GROUP BY &StrWithNamePole; HAVING COUNT(*)>1 ; INTO CURSOR DoublRec SELECT DoublRec && список дублированных записей COUNT TO D_Rec && сколько дублирующих записей IF D_Rec = 0 && если дублирующих записей нет - закрываем курсор USE ENDIF SELECT(d_r_t_a) && в "старую" рабочую область RETURN D_Rec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 09:57 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
для этого, наверное, потребуется fox? Завтра попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 10:13 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Я бы сделал так: отбэкапить базы и выполнить сл. код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 10:27 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
загружаю базу в fox, пытаюсь выполнить запрос, а он гоаорит что не найден файл nextword.prg? Что делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2007, 11:05 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
А вот и файл nextword.prg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2007, 15:26 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
to alex_zima: А что он делает и куда его поместить? Расскажите для общего образования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 06:54 |
|
||
|
Дурацкий налогоплательщик. Дубли записей
|
|||
|---|---|---|---|
|
#18+
Файл поместить рядом с базой, загружаемой в фоксе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 15:13 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1589954]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 339ms |

| 0 / 0 |
