Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск и удаление дублирующихся записей / 15 сообщений из 15, страница 1 из 1
24.10.2007, 15:12
    #34891579
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
Всем доброго времени суток.
Люди добрые помоги, плиз. Есть таблица необходимо совершить поиск, а потом удаление дублирующихся записей. Т.е. если одно поле в таблице будет совпадать со следующими полями...
И как более грамотно это организовать?
...
Рейтинг: 0 / 0
24.10.2007, 15:18
    #34891614
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
...
Рейтинг: 0 / 0
24.10.2007, 15:28
    #34891659
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
Огромное СПАСИБ.
Надеюсь это решит мою махонькую проблему.
...
Рейтинг: 0 / 0
24.10.2007, 15:49
    #34891748
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
Еще раз спасибо, но вот ребус опять возник (не сидел за фоксом лет 8). А удалить то как?
Заранее спасибо
...
Рейтинг: 0 / 0
24.10.2007, 16:12
    #34891872
pitermax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
есть команда delete и pack, если я правильно вопрос понял
...
Рейтинг: 0 / 0
24.10.2007, 16:24
    #34891925
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE CURSOR tabMain (tabMainID I, NickName C( 50 ), curDate D, Chet L)
INSERT INTO tabMain (tabMainID, NickName, curDate, Chet) VALUES ( 1 , "Первая", Date( 2005 , 6 , 1 ), .F.)
INSERT INTO tabMain (tabMainID, NickName, curDate, Chet) VALUES ( 2 , "Вторая", Date( 2005 , 6 , 2 ), .T.)
INSERT INTO tabMain (tabMainID, NickName, curDate, Chet) VALUES ( 3 , "Третья", Date( 2005 , 6 , 3 ), .F.)
INSERT INTO tabMain (tabMainID, NickName, curDate, Chet) VALUES ( 4 , "Четвертая", Date( 2005 , 6 , 1 ), .T.)
INSERT INTO tabMain (tabMainID, NickName, curDate, Chet) VALUES ( 5 , "Пятая", Date( 2005 , 6 , 2 ), .F.)
INSERT INTO tabMain (tabMainID, NickName, curDate, Chet) VALUES ( 6 , "Шестая", Date( 2005 , 6 , 1 ), .T.)
SELECT DISTINCT tabMain.* ;  
FROM tabMain ;  
INNER JOIN tabMain tabDouble ON tabMain.curDate = tabDouble.curDate  ;  
  			AND tabMain.Chet = tabDouble.Chet ;
  			AND tabMain.tabMainID <> tabDouble.tabMainID ;
ORDER BY tabMain.curDate, tabMain.Chet

DELETE FROM tabMain WHERE tabMain.tabMainID = Query.tabMainID
Не вопрос удаляет, точнее маркирует для удаления. А вот и ребус! PACK c курсором работать не хочет(
Требуется удалить из курсора а потом скопировать в нормальный вид (DBF). Вот такая вот загогулина -(
...
Рейтинг: 0 / 0
24.10.2007, 16:58
    #34892099
Поиск и удаление дублирующихся записей
Поставьте set delete on и забудьте про Pack.
...
Рейтинг: 0 / 0
24.10.2007, 17:19
    #34892183
+++++
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
+ индекс по нот делетед Вам поможет
...
Рейтинг: 0 / 0
24.10.2007, 17:23
    #34892196
++++
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
Код: plaintext
1.
2.
3.
4.
select * ;
	from tabMain ;
	where !deleted() ;
	into dbf c:\ 1 
...
Рейтинг: 0 / 0
24.10.2007, 17:28
    #34892220
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
сорри, не совсем понял
++++++ индекс по нот делетед Вам поможет
Я использовал
Код: plaintext
SELECT * FROM tabMain WHERE !DELETED() INTO CURSOR tabMain READWRITE
Если записей в таблице штук этак 500к, думать то долго не будет? В принципе вообще реально записи в курсоре убить (PACK for CURSOR -8 )?
...
Рейтинг: 0 / 0
24.10.2007, 17:45
    #34892304
Поиск и удаление дублирующихся записей
авторВ принципе вообще реально записи в курсоре убить (PACK for CURSOR -8 )?
Ну ведь уже напИсано: поставьте set delete on. Трудно добавить одну строчку в программу?
...
Рейтинг: 0 / 0
24.10.2007, 18:06
    #34892411
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
проходящий.Ну ведь уже напИсано: поставьте set delete on. Трудно добавить одну строчку в программу?
Не хотца глобалить ) Вариант с !DELETED в принципе подходит. Вот терь думаю как все это в ОДИН SELECT засунуть..... Это реально?
Вот это работает, но криво. Сует не то что хочу. Хочу штоб КРОМЕ этой записи, а наоборот (((
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT DISTINCT ;
  tabMain.* ;
  FROM tabMain ;
  LEFT OUTER JOIN tabMain tabDouble ON tabMain.curDate = tabDouble.curDate ;
  AND tabMain.tabMainID <> tabDouble.tabMainID ;
  WHERE ISNULL(tabDouble.tabMainID) 
Мозг уже сплавился
...
Рейтинг: 0 / 0
24.10.2007, 19:12
    #34892614
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
ПАРДОН! Я не совсем правильно задал вопрос.
Необходимо чтобы все ПОСЛЕДУЮЩИЕ дублирующиеся записи удалялись, а первая оставалась. Сейчас удаляются но ВСЕ записи которые дублируются.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE CURSOR tabMain (tabMainID I, NickName C( 50 ), tCode C ( 6 ), Chet L)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 1 , "Один", "1111", .F.)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 2 , "Два", "1112", .T.)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 3 , "Три", "1111", .F.)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 4 , "Четыре", "1311", .T.)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 5 , "Пять", "11342", .F.)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 6 , "Шесть", "11345", .T.)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 7 , "Семь", "181231", .T.)
INSERT INTO tabMain (tabMainID, NickName, tCode, Chet) VALUES ( 8 , "Восемь", "115671", .T.)

SELECT DISTINCT tabMain.* ;  
	FROM tabMain ;  
	INNER JOIN tabMain tabDouble ON tabMain.tCode = tabDouble.tCode;  
	AND tabMain.tabMainID <> tabDouble.tabMainID ;
	ORDER BY tabMain.tCode, tabMain.Chet ;
	INTO CURSOR Out1 NOFILTER READWRITE

DELETE FROM tabMain WHERE tabMain.tCode = Out1.tCode

select * ;
	from tabMain ;
	where !deleted() ;
	ORDER BY tabMain.tCode ;
	into CURSOR Out2 NOFILTER READWRITE

Как быть? Помогите плиз
...
Рейтинг: 0 / 0
24.10.2007, 21:43
    #34892863
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
Как удалить с таблицы повторяющееся записи??
...
Рейтинг: 0 / 0
25.10.2007, 10:19
    #34893375
GanjaPAk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и удаление дублирующихся записей
Большое спасибо ВладимирМ!
И ВСЕМ конечно тоже спасибо!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск и удаление дублирующихся записей / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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