Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.047 c
15-1138555045
GanibalLector
2006-01-29 20:17
2006.02.19
Update KB893066


6-1131122906
WebSQLNeeder
2005-11-04 19:48
2006.02.19
Как запретить что бы в WebBrowser вылетали окошки JavaScript? Или


2-1138631840
13
2006-01-30 17:37
2006.02.19
Буфер данных


2-1138608035
Nurga
2006-01-30 11:00
2006.02.19
Как убрать контексное меню - TWebBrowser, ShockwaveFlash


2-1138099753
Змей
2006-01-24 13:49
2006.02.19
регулировка звука(только не баньте тему плз)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский