Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

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

 
kreyl   (2005-12-21 15:10) [0]

Есть АДО датасет вида:
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...,
но как это сделать в датасете?


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

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


 
Sergey13 ©   (2005-12-21 15:29) [2]

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


 
Desdechado ©   (2005-12-21 15:36) [3]

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


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

2 Sergey13

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

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

2 alex_

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


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

2 Desdechado

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


 
unknown ©   (2005-12-21 15:59) [6]

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


 
alex_*** ©   (2005-12-21 16:05) [7]

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


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

2 unknown

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

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


 
sniknik ©   (2005-12-21 16:07) [9]

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


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

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


 
Reindeer Moss Eater ©   (2005-12-21 16:39) [11]

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


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


> kreyl   (21.12.05 16:25) [10]


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



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
1-1137417843
avsam
2006-01-16 16:24
2006.02.19
Delphi 2006 и QuickReport


3-1135253805
UnDISCOvery
2005-12-22 15:16
2006.02.19
MS Access - поле типа "счетчик"


2-1139040526
Julia
2006-02-04 11:08
2006.02.19
Как объявить тип TDateSetState?


3-1135335487
UnDISCOvery
2005-12-23 13:58
2006.02.19
MS Access - макс.размер файла БД - сжать и добавить


15-1138438980
ArtemESC
2006-01-28 12:03
2006.02.19
Файлы chm