Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Как выбрать только дубли   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.062 c
4-1127981652
BaxTMaH
2005-09-29 12:14
2005.12.18
Русский язык


2-1132415297
Aleks
2005-11-19 18:48
2005.12.18
Какой компонент использовать


2-1133434190
JTAG
2005-12-01 13:49
2005.12.18
Коллеги подскажите как создать форму


2-1133301449
Aleks
2005-11-30 00:57
2005.12.18
Подскажите мастера, как получить код символа


14-1132935403
Separator
2005-11-25 19:16
2005.12.18
Экзаменационные темы по информатике у переводчиков