Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как подсчитать количество неодинаковых записей в датасете?


kreyl ©   (2005-12-21 15:10:00) 

Есть АДО датасет вида:
a b c
0 0 1
0 0 2
0 1 5
0 2 4
0 2 8
0 2 3
Нужно посчитать количество неодинаковых записей в колонке два.
Будь то MSSQL, я бы написал SELECT COUNT(DISTINCT b) FROM...,
но как это сделать в датасете?


Курдль   (2005-12-21 17:25:00) [1]


> kreyl   (21.12.05 16:25) [10]


Странное упорство... Как ты хочешь решить задачу иначе, чем перебором записей?
Найдя волшебный недокументированный метод, который все сделает?
Переходи тогда на Вижуал Кролика: http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/cpref/html/frlrfsystemdatadatatableclassselecttopic.asp


Reindeer Moss Eater   (2005-12-21 16:39:00) [2]

Тебе еще в первом посте дали ответ


kreyl   (2005-12-21 16:25:00) [3]

И всё-таки, как быть с датасетом? Упражняться в SQL - это весело, но задача ставилась иначе :-)
Может, как-то подключить агрегатные поля?


sniknik   (2005-12-21 16:07:00) [4]

SELECT Count(*) FROM (SELECT DISTINCT b FROM таблица)


kreyl   (2005-12-21 16:06:00) [5]

2 unknown

Этот запрос выдаст количество записей, встречающихся только один раз.
Правильный запрос выглядит так:

SELECT COUNT(*) FROM
(
 SELECT count (b)
 FROM Table
 GROUP BY b
)


alex_***   (2005-12-21 16:05:00) [6]

много хочешь от DataSet. Это же не БД, чтоб SQL поддерживать


unknown   (2005-12-21 15:59:00) [7]

Может так?
select count(b) from ...
group by b
having count (b)=1


kreyl   (2005-12-21 15:52:00) [8]

2 Desdechado

Сорри, не понял вопроса.
Есть таблица в аксессе, примерно такого вида, как я написал. Примерно - потому что там есть еще пара текстовых полей. Таблица вся запихивается в датасет, и дальше с ней начинается работа.


kreyl   (2005-12-21 15:48:00) [9]

2 Sergey13

Данные получены из аксесса. Я пользовался борландской демкой ADO Briefcase: открывается подключение к базе, считываются данные в датасет (сделал через SQL запрос), подключение закрывается. Потом данные из датасета используются в различных местах; заранее его отгруппировать нельзя.

Есть, конечно, вариант - в процессе скачивания данных получить отдельным запросом это количество; но, во-первых, датасет в процессе работы будет меняться (и нужно будет получать оперативное количество), во-вторых аксесс не умеет COUNT(DISTINCT ...)

2 alex_

Оно, конечно, да, но хочется ведь как-то изящнее :-)


Desdechado   (2005-12-21 15:36:00) [10]

> записи в колонке
это что-то таблично-вложенное?


Sergey13   (2005-12-21 15:29:00) [11]

2 kreyl   (21.12.05 15:10)
А откуда дровишки то? В смысле данные в датасете?


alex_***   (2005-12-21 15:13:00) [12]

отсортируй по ним и в цикле пробегись


Наверх

Титульная страница Поиск, карта сайта Написать письмо