Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизКак выбрать только дубли Найти похожие ветки
← →
Term © (2005-10-31 17:20) [0]Поля Naimen, Firma, Country, Nozol_Gr, NDS
В таблице есть записи которые дублируют друг друга как выбрать только те записи у которых есть дублирующие
я пытаюсь использовать EXISTS но чтото результат не получается
← →
Курдль © (2005-10-31 17:24) [1]"Зацените! Я сделал одну фитчу, а в ней какая-то бага. Что мне делать?"
← →
Term © (2005-10-31 17:24) [2]ключи первичные у записей разные конечно, я просто поле ключа не указал
← →
Term © (2005-10-31 17:29) [3]ну в таблице есть записи которые друг друга повторяют, как выбрать только записи у которых есть дубли
← →
Курдль © (2005-10-31 17:32) [4]
> Term © (31.10.05 17:29) [3]
>
> ну в таблице есть записи которые друг друга повторяют, как
> выбрать только записи у которых есть дубли
Как раз это все поняли, а вот какой exists не получился - не в курсах :)
← →
Term © (2005-10-31 17:34) [5]напишите просто что нужно сделать
← →
Курдль © (2005-10-31 17:34) [6]"Выбери все записи, для которых существуют другие записи, у которых все поля совпадают с соотв. полями исходных записей, кроме ключевого"
← →
Lexer © (2005-10-31 17:35) [7]Вариантов много, например можно объеденить саму с собой
SELECT T.*
FROM TABLE T
INNER JOIN TABLE T2
ON T.id_key != T2.id_key
AND T.Naimen = T2.Naimen
AND T.Firma = T2.Firma
AND ...
Получишь все дубликаты
← →
Johnmen © (2005-10-31 17:35) [8]Осталось озвучить СУБД...
← →
Term © (2005-10-31 17:37) [9]MSSQL2000
← →
Term © (2005-10-31 17:38) [10]
> Вариантов много, например можно объеденить саму с собой
> SELECT T.*
> FROM TABLE T
> INNER JOIN TABLE T2
> ON T.id_key != T2.id_key
> AND T.Naimen = T2.Naimen
> AND T.Firma = T2.Firma
> AND ...
> Получишь все дубликаты
наподобие сделалSELECT DISTINCT*
FROM Spr_Medcine sm INNER JOIN
Spr_Medcine sm1 ON
(sm.Naimen=sm1.Naimen)and
(sm.Firma=sm1.Firma)and
(sm.Country=sm1.Country)and
(sm.Nozol_Gr=sm1.Nozol_Gr)and
(sm.NDS=sm1.NDS)and(sm.Med_Id<>sm1.Med_Id)
просто в результате каждый дубль получается дважды
← →
Курдль © (2005-10-31 17:42) [11]
> Term © (31.10.05 17:38) [10]
Чё, я exists-а так и не дождусья?
Тогда... and(sm.Med_Id>sm1.Med_Id)
← →
Term © (2005-10-31 17:45) [12]
> and(sm.Med_Id>sm1.Med_Id)
это первичный ключ
← →
Lexer © (2005-10-31 17:46) [13]
SELECT COUNT(*), sm1.Naimen, sm1.Firma
FROM Spr_Medcine sm
GROUP BY sm1.Naimen, sm1.Firma
HAVING COUNT(*) > 1
← →
Term © (2005-10-31 17:47) [14]
> SELECT *
> FROM Spr_Medcine sm
> WHERE EXISTS(
> SELECT DISTINCT *
> FROM Spr_Medcine sm INNER JOIN
> Spr_Medcine sm1 ON
> (sm.Naimen=sm1.Naimen)and
> (sm.Firma=sm1.Firma)and
> (sm.Country=sm1.Country)and
> (sm.Nozol_Gr=sm1.Nozol_Gr)and
> (sm.NDS=sm1.NDS)and(sm.Med_Id<>sm1.Med_Id))
пробую так но в итоге получаю все записи таблицы
← →
Johnmen © (2005-10-31 17:49) [15]>просто в результате каждый дубль получается дважды
Естественно, ведь операция "рефлексивна"...:)
← →
Term © (2005-10-31 17:53) [16]
SELECT *
FROM Spr_Medcine sm
WHERE EXISTS(
SELECT *
FROM Spr_Medcine sm1 WHERE
(sm.Naimen=sm1.Naimen)and
(sm.Firma=sm1.Firma)and
(sm.Country=sm1.Country)and
(sm.Nozol_Gr=sm1.Nozol_Gr)and
(sm.NDS=sm1.NDS)and(sm.Med_Id<>sm1.Med_Id))
order by sm.Naimen
так вот вроде всё правильно
← →
Johnmen © (2005-10-31 18:02) [17]Всё равно будет >=2 записей с одинаковыми полями кроме ключевого...
← →
Term © (2005-10-31 18:30) [18]ну да но ничего для информации что править подойдёт
← →
Anatoly Podgoretsky © (2005-10-31 19:32) [19]Здесь Дельфи не пахнет
← →
Курдль © (2005-11-01 10:18) [20]
> Term © (31.10.05 17:47) [14]
> > SELECT *
> > FROM Spr_Medcine sm
> > WHERE EXISTS(
> > SELECT DISTINCT *
> > FROM Spr_Medcine sm INNER JOIN
> > Spr_Medcine sm1 ON
> > (sm.Naimen=sm1.Naimen)and
> > (sm.Firma=sm1.Firma)and
> > (sm.Country=sm1.Country)and
> > (sm.Nozol_Gr=sm1.Nozol_Gr)and
> > (sm.NDS=sm1.NDS)and(sm.Med_Id<>sm1.Med_Id))
> пробую так но в итоге получаю все записи таблицы
Напомнило анекдот:
Приходит на телеграф овчарка, приносит деньги и заполненный бланк.
На бланке: "Гав, гав-гав, гав-гав-гав, гав-гав".
Телеграфистка: За эти деньги Вы могли бы дописать еще одно "гав".
Овчарка: "Но ведь тогда какая-то х...ня получится!!!" 8-()
INNER JOIN = "гав"
← →
Juice © (2005-11-01 10:44) [21]Я например, чтобы дубликаты не отбирались просто ставил <>max(key). Хуже когда ключа нет в таблице, был у меня такой гемор на IB, через системные таблицы конечно решается.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c