Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите найти дубли / 7 сообщений из 7, страница 1 из 1
06.08.2008, 01:26
    #35472361
Помогите найти дубли
SET TALK OFF

CREATE CURSOR CUR1 (I1 INTEGER, I2 INTEGER)

INSERT INTO CUR1 (I1,I2) VALUES (1,1)
INSERT INTO CUR1 (I1,I2) VALUES (2,1)
INSERT INTO CUR1 (I1,I2) VALUES (3,2)
INSERT INTO CUR1 (I1,I2) VALUES (4,3)
INSERT INTO CUR1 (I1,I2) VALUES (5,3)
INSERT INTO CUR1 (I1,I2) VALUES (6,4)

* DELETE FROM CUR1 WHERE - здесь пока не знаю что писать ??

BROWSE
USE

* мне надо получить
* (1,1)
* (2,1)
* (4,3)
* (5,3)
* подскажите что надо написать в DELETE FROM ;
* надо найти все записи в которых значения I2 равны друг другу
...
Рейтинг: 0 / 0
06.08.2008, 06:56
    #35472459
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти дубли
БлагодарностьSET TALK OFF

CREATE CURSOR CUR1 (I1 INTEGER, I2 INTEGER)

INSERT INTO CUR1 (I1,I2) VALUES (1,1)
INSERT INTO CUR1 (I1,I2) VALUES (2,1)
INSERT INTO CUR1 (I1,I2) VALUES (3,2)
INSERT INTO CUR1 (I1,I2) VALUES (4,3)
INSERT INTO CUR1 (I1,I2) VALUES (5,3)
INSERT INTO CUR1 (I1,I2) VALUES (6,4)

* DELETE FROM CUR1 WHERE - здесь пока не знаю что писать ??

BROWSE
USE

* мне надо получить
* (1,1)
* (2,1)
* (4,3)
* (5,3)
* подскажите что надо написать в DELETE FROM ;
* надо найти все записи в которых значения I2 равны друг другу

Запросом то найти дубли можно, а вот какой дубль именно удалять думаю наврядли сможешь объяснить, предлагаю пройтись циклом по этому запросу и по всем твоим правилам найти имеено те записи которые необходимо удалить, из того что ты написал я так и не понял какие именно записи надо удалять... Так как по условию что именно l2 равняются по тому что ты выдал в результате не сходится с условием, но в цикле можешь организовать любые условия.
...
Рейтинг: 0 / 0
06.08.2008, 10:08
    #35472714
LUCIAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти дубли
SELECT * FROM CUR1 WHERE I2 IN (SELECT I2 FROM CUR1 GROUP BY I2 HAVING COUNT(*)>1)
...
Рейтинг: 0 / 0
06.08.2008, 10:32
    #35472802
Помогите найти дубли
Спасибо
...
Рейтинг: 0 / 0
06.08.2008, 11:22
    #35472983
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти дубли
Непомню только, в подзапросе можно использовать having.
Если да, тогда одним DML запросом можно удалить дубли.
Код: plaintext
1.
2.
3.
delete from cur1
from (select min(l1) as l1Min, l2 from cur1 group by l2 having count(*)> 1 ) inCur
where cur1.l2=inCur.l2 and cur1.l1<>inCur.l1Min
Так можно выбрать дубли:
Код: plaintext
1.
2.
3.
4.
5.
6.
select *
from cur1
where l2 in 
(
select l2 from cur1 group by l2 having count(*)> 1 
)
...
Рейтинг: 0 / 0
06.08.2008, 11:27
    #35473005
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти дубли
тут ошибочка, не убрал лишний from :)
удалить только дубли
Код: plaintext
1.
2.
3.
delete cur1
from (select min(l1) as l1Min, l2 from cur1 group by l2 having count(*)> 1 ) inCur
where cur1.l2=inCur.l2 and cur1.l1<>inCur.l1Min
удалить все записи, которые было более двух
Код: plaintext
1.
2.
3.
delete cur1
from (select l2 from cur1 group by l2 having count(*)> 1 ) inCur
where cur1.l2=inCur.l2 
...
Рейтинг: 0 / 0
12.08.2008, 00:29
    #35482171
Помогите найти дубли
Спасибо всем. Тема была создана для написания вспомогательной
утилиты для удаления дублей файлов в каталоге после спутниковой
рыбалки. Что получилось прикладываю здесь. Любая критика
приветствуется.

Да есть утилиты типа CloneSpy, DupKiller, но что то их работа
мне не очень понравилась.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите найти дубли / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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