Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > Как сделать нижеописанную выборку из dbf файла?


Автор: dronster 13.12.2006, 11:27
Хелп ми, народ. 
Есть файл dbf формата myfile.dbf . В нем есть поле field1 например. В этом поле есть повторяющиеся значения. Как сделать выборку, в которой будут выбраны записи, где значение поля field1 повторяется более чем один раз. 
Например если поле 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

Буду очень благодарен, если кто откликнется.... 

Автор: MFoxer 13.12.2006, 20:44
Код

 Select field1 From myfile Group BY field1 HAVING Count(field1)>1

Автор: achepkunov 13.12.2006, 23:14
так выведется 

3
4
7
10

Если фокс скушает - Select field1 From myfile where field1 in(Select field1 From myfile Group BY field1 HAVING Count(field1)>1)

если нет, что-то тиnа

Код

select a
printon = .f.
do while .t.
   prev_field = field1
   skip
   if .eof. 
      exit
   endif
   if prev_field = field1
       printon = .t.
   endif
   if printon 
      say prev_field
   endif
   if prev_field <> field1
       printon = .f.
   endif
enddo


ой, ужас какой я тут понаписал smile

Автор: Cashey 14.12.2006, 00:19
тот же код, только без GROUP BY

Автор: karina 22.12.2006, 16:21
фокс скушал - Select field1 From myfile where field1 in(Select field1 From myfile Group BY field1 HAVING Count(field1)>1)
а без Group BY  не работает

Автор: Cashey 28.12.2006, 13:42
Цитата(karina @  22.12.2006,  17:21 Найти цитируемый пост)
Select field1 From myfile where field1 in(Select field1 From myfile Group BY field1 HAVING Count(field1)>1)


Цитата(MFoxer @  13.12.2006,  21:44 Найти цитируемый пост)
Select field1 From myfile Group BY field1 HAVING Count(field1)>1


это разные запросы и логика у них разная

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)