Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 21:11   #1
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию Количество одинаковых строк

Как правильно подсчитать количество одинаковых строк. Делаю вот так: ответ выводит всегда 2. Как это можно исправить?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
with AdoQuery1 do
  begin
      First;
    SQL.Text :=
      ' SELECT Eric.name' + // Index у меня - это поле, дубликаты которого надо найти
      ' FROM Eric' +
      ' GROUP BY Eric.name' +
      ' HAVING (((Count(Eric.name))>1));';
    Open;
    i:=1;
    while not EOF do
    begin
      memo1.lines.add(FieldByName('name').AsString); // для поверки - пишу найденные значения в Memo
      // вместо этого можешь сразу заполнять строку для фильтрации
      Next;
      i:=i+1;
    end;
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='Select * from Eric';
ADOQuery1.Open;
Label1.Caption:=inttostr(i);
end;
Showmessage('Составить тех документацию');
end;
end.
Ericnex вне форума Ответить с цитированием
Старый 08.05.2013, 21:15   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Попробуйте так:

Цитата:
SELECT Eric.name, COUNT(*) FROM Eric GROUP BY Eric.name HAVING Count(*)>1
ReportCube вне форума Ответить с цитированием
Старый 08.05.2013, 21:28   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
First;
это чтоб не дай чего?

Цитата:
Делаю вот так: ответ выводит всегда 2. Как это можно исправить?
а что тут исправлять?
eval вне форума Ответить с цитированием
Старый 08.05.2013, 22:18   #4
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

В любом случае выводит ответ 2 даже если записи 3 или 4
Ericnex вне форума Ответить с цитированием
Старый 09.05.2013, 08:32   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
  SQL.Text :=
      ' SELECT Eric.name' + // Index у меня - это поле, дубликаты которого надо найти
  ...
Это такая шутка или тест на сообразительность здешней публики?
Где в запросе слово "Index"? Или он этот Index стоит в сторонке и ухмыляется, глядя на ваши потуги определить где он там в дубликатах числиться?

В приведенном ТС запросе дубликаты ищутся по полю name и этот запрос правильный.
Определитесь по какому полю искать дубликаты.
Прик вне форума Ответить с цитированием
Старый 10.05.2013, 09:34   #6
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

На комментарии в программе не обращайте внимание - это от старого кода осталось. Дубликаты у меня ищутся по полю name. И как определить количество этих дубликатов? И еще вопрос: если у меня 2 экземпляра дубликатов, как тогда правильно вывести количество дубликатов, через массив например?(пример кода если можно)
Ericnex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сканирования строк. Зная количество строк и первый элемент, это количество символов с троке. dimon9 Общие вопросы C/C++ 8 02.11.2012 22:40
Ввести последовательность строк. Подсчитать количество совпадающих строк. на языке SHELL lj23lj Фриланс 1 30.03.2012 16:41
Количество одинаковых слов в строке. Delphi topside Помощь студентам 10 30.10.2011 23:05
Поиск одинаковых строк Demitriy Microsoft Office Excel 45 26.07.2010 08:50
Количество одинаковых слов в таблице K608723 Microsoft Office Excel 1 22.09.2009 00:33