Как сделать нижеописанную выборку?

  • Автор темы dronster
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

dronster

#1
Есть таблица. Нужно выбрать те записи, где поле "field1" повторяется более чем 1 раз. Как реализовать? Подскажите ПЛЗ.
 
B

Barmutik

#3
Хммм.. а как в записи могут иметь различное количество полей? В реляционной БД + к этому как может быть нескоьлко полей с одинаковым именем?

ВОт если Вы говорите об одинаковых значения в поле Filed1 то

Код:
SELECT * FROM (SELECT Filed1, COUNT(*) AS MyCount FROM YourTable GROUP BY Field1) A WHERE
A.MyCount > 1
 
04.09.2006
2 566
3
#5
Можно еще так, если HAVING поддерживается СУБД:
Код:
SELECT Filed1, COUNT(*) AS MyCount FROM YourTable GROUP BY Field1 Having MyCount > 1
 
B

Barmutik

#6
По идее HAVING входит в стандарт ANSI 92 так что должны все его поддерживать кто пертендует на поддержку SQL..
 
D

dronster

#7
Хммм.. а как в записи могут иметь различное количество полей? В реляционной БД + к этому как может быть нескоьлко полей с одинаковым именем?

ВОт если Вы говорите об одинаковых значения в поле Filed1 то

Код:
SELECT * FROM (SELECT Filed1, COUNT(*) AS MyCount FROM YourTable GROUP BY Field1) A WHERE
A.MyCount > 1
Я открываю базу в SQL Explorer, простые запросы выполняются, а вот который написал Barmutik - нет...
писал вот так...
Код:
SELECT * FROM (SELECT cod, COUNT(*) AS MyCount FROM zone GROUP BY cod) A WHERE
A.MyCount > 1
 
B

Barmutik

#10
Значит не судьба .. я проверил .. не работает ... Having кстати тоже не работает ...

А другого варианта я как-то и не могу так сходу представить...
 
D

dronster

#11
Значит не судьба .. я проверил .. не работает ... Having кстати тоже не работает ...

А другого варианта я как-то и не могу так сходу представить...
Хм, ну оччень нужно. Может какую-нить программку простенькую подскажете как написать на Делфи к примеру?
 
04.09.2006
2 566
3
#12
<!--QuoteBegin-dronster+12:12:2006, 21:36 -->
<span class="vbquote">(dronster @ 12:12:2006, 21:36 )</span><!--QuoteEBegin-->БД обычная - FoxPro *.dbf
[snapback]50594" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вот она то и не поддерживает, ни вложенные запросы, ни HAVING, я про это говорил ранее. Советую, если конечно это возможно, сменить БД. Если нет, то реализацию выборки повторяющихся данных надо реализовывать в приложении :p

Эта проблема возникла не первый раз, так что советую пошустрить Гугл и найти решение
 
D

dronster

#13
ну может кто подскажет как реализовать это в приложении?
 
B

Barmutik

#14
Ну тут просто .. получили курсор после выборки с Group BY И дальше уже руками его фиьтранули на предмет поля со значением больше 1 ...
 
D

dronster

#15
Ну тут просто .. получили курсор после выборки с Group BY И дальше уже руками его фиьтранули на предмет поля со значением больше 1 ...
Например если поле field1 содержит следующие значения
1
2
3
3
4
4
5
6
7
7
7
7
8
9
10
10
10

Выборка должна быть такая
3
3
4
4
7
7
7
7
10
10
10
 
B

Barmutik

#16
Давайте по шагам ..

Делаете запрос:

Код:
SELECT Field1, COUNT(*) AS MyCount FROM MyTable Group By Field1
Потом в получившемся курсоре фильтруете его уже в TQuery:

Код:
 Filter := 'MyCount > 1';
Filtered := True;
И по идее будет Вам счастье .. если я ещё не запамятовал как с БД работать на Дельфи :)
 
D

dronster

#17
Давайте по шагам ..

Делаете запрос:

Код:
SELECT Field1, COUNT(*) AS MyCount FROM MyTable Group By Field1
Потом в получившемся курсоре фильтруете его уже в TQuery:

Код:
 Filter := 'MyCount > 1';
Filtered := True;
И по идее будет Вам счастье .. если я ещё не запамятовал как с БД работать на Дельфи :D
Респект тебе Бармутик :) Спасибо огромное
 
B

Barmutik

#18
:D Спасибо конечно .. но я только что увидел что мой варинат не даст результа который вы написали...

Если бы делать не в ДБФ то вопросов не вызвало бы как сделать .. а вот как в ДБФ ... надо подумать...
 
Статус
Закрыто для дальнейших ответов.