powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выборка повторяющихся записей
25 сообщений из 37, страница 1 из 2
Выборка повторяющихся записей
    #32208498
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо из таблицы Interbase выбрать и вывести все записи с одинаковым значением одного из полей.
Таких значений может быть несколько...но нужны они все
То есть по сути, нужны те записи, где любое значение FIELD1 встречается в таблице больше одного раза...
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208507
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Погляди тут:\r
/topic/38634
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208529
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрела..немного не то....Хотя вопрос аналогичный

SELECT * FROM TABLE T1
WHERE (SELECT COUNT(*)
FROM TABLE T2
WHERE T1.FIELD = T2.FIELD) > 1

В моем случае T2.FIELD это и есть T1.FIELD.... и мне нужны дубликаты в пределах одной таблицы....
Вот допустим, есть таблица с контингентом работников, так из нее надо выбрать всех двойников....То есть в результате выполнения запроса должно получиться следующее:

Иванов Иван Иванович 1970
Иванов Иван Иванович 1965
Петрова Марфа Васильевна 1955
Петрова Марфа Васильевна 1967
Сидоров Василий Иванович 1977
Сидоров Василий Иванович 1937
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208554
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так:

select name, count(*)
from table1
group by name
having count(*) > 1
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208573
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делаю так:

select * from sptvr a
where (select count(b.id) from sptvr b where a.namtvr = b.namtvr) > 1
order by a.namtvr

Таким образом выбираются записи с ОДИНАКОВЫМ значением поля NAMTVR
таблицы SPTVR
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208602
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделала так:
select fam
from table
group by fam
having count (fam) > 1

Сработало...Всем спасибо
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208693
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рано обрадовалась...:(
Записи выводятся только по одному разу....
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208710
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаиваю на

select * from table
where (select count(b.id) from table b where a.fam = b.fam) > 1
order by a.fam

Выбираются ВСЕ повторяющиеся записи
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208712
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry, я чуть-чуть ошибся. Правильно так:

select * from table a
where (select count(b.id) from table b where a.fam = b.fam) > 1
order by a.fam
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208718
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так табличка то у меня всего одна....
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208738
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно одну таблицу использовать в запросе с разными псевдонимами, что и используется. Попробуйте, потом продолжим разговор.
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208754
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select * from ab
where abfam in (select abfam from ab
group by abfam
having count (abfam) > 1)
and abname in(select abname from ab
group by abname
having count (abname) > 1)
and abotch in(select abotch from ab
group by abotch
having count(abotch) > 1)
order by abfam

Вот так все работает!!))
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208759
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой! Как тяжело все это будет работать на большой базе ...
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208764
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если есть предложения, то выслушаю...Как сие можно оптимизировать?
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208774
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При наличии ключа по полю NAMTVR в таблице SPTVR у меня запрос

select * from sptvr a
where (select count(b.id) from sptvr b where a.namtvr = b.namtvr) > 1
order by a.namtvr

работает доли секунды на таблице с 7100 записями
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208783
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Катерина!

А почему не подходит вариант Timujin ?

Мне кажется самый логичный.
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208784
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И мне
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208786
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так Я его вариант и взяла :) Только под себя чуть-чуть подогнала....просто у меня три поля....которые должны полностью совпадать
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208789
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from sptvr a
where (select count(b.id) from sptvr b where a.namtvr = b.namtvr and a.xxx = b.xxx and a.yyy = b.yyy and ...) > 1
order by a.namtvr
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32208815
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кажется еще один вариант, но через ХП (очень быстрый, т.к. проходов по записям мало)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
begin

 for select field1 from tables group by field1, ... having count(field1) >  1  into :field1
 do
   for select field1, ... from tables where field1 = :field1 into ....
 do suspend;

end
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32209998
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо! :))
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32212807
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Timujin
Воспользовалась твоим советом и написала:

select * from ab
where (select count(ab.abfam) from ab where ab.abfam = ab.abfam and ab.abfam = ab.abfam and ab.abname = ab.abname) > 1
order by ab.abfam

Работает НАМНОГО быстрее, чем то, что предложила Я сама....
Огромное спасибо еще раз:))
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32212810
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поторопилась обрадоваться....

Пишу так...

select abfam,abname,abotch,fckey,sckey from ab
where (select count(ab.abfam) from ab where ab.abfam = ab.abfam and ab.abname = ab.abname and ab.abotch = ab.abotch) > 1
order by ab.abfam, ab.abname, ab.abotch

Но выбирается не совсем то, что нужно....Вернее среди выбранных полей на самом деле есть нужные мне записи, но встречаются и те, которых быть не должно....
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32213138
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратите внимание на ПСЕВДОНИМЫ таблиц в запросе.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select PSEVD1.abfam,PSEVD1.abname,PSEVD1.abotch,
         PSEVD1.fckey,PSEVD1.sckey 
from ab PSEVD1
where (select count(PSEVD2.abfam) from ab PSEVD2 
          where PSEVD2.abfam = PSEVD1.abfam 
            and PSEVD2.abname = PSEVD1.abname 
            and PSEVD2.abotch = PSEVD1.abotch) >  1  
order by PSEVD1.abfam, PSEVD1.abname, PSEVD1.abotch 
...
Рейтинг: 0 / 0
Выборка повторяющихся записей
    #32213731
Катерина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда вопрос такой....
Как обратиться к одной и той же таблице, но с разными псевдонимами?
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выборка повторяющихся записей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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