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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 00:15   #1
RamireZ
Студент
Пользователь
 
Аватар для RamireZ
 
Регистрация: 30.05.2008
Сообщений: 61
По умолчанию Получить количество записей с определенным значением

Работаю с AdoQuery.
Глупый вопрос, но все же:
Как получить количество записей с определенным значением в них?(напр.отдельно кол-во записей, где id=1,отдельно id=2,отдельно id=3 и т.д)
RamireZ вне форума Ответить с цитированием
Старый 03.06.2010, 09:02   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,089
По умолчанию

Запрос:
Код:
select id, COUNT(id)
from mytable
group by id
Получим набор с двумя колонками: id и количество записей с таким id
pu4koff на форуме Ответить с цитированием
Старый 03.06.2010, 09:03   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
select id, count(*) as YourCount from Таблица 
  group by id
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.06.2010, 14:47   #4
RamireZ
Студент
Пользователь
 
Аватар для RamireZ
 
Регистрация: 30.05.2008
Сообщений: 61
По умолчанию

ругается на Access violation in module msjet40.dll.
Почему такое может быть? может в самой базе Access че т неладное, т.к только что создал новый проект и запрос с этой базой и опять Acess violation
Код:
Adoquery1.SQL.Clear;
Adoquery1.SQL.Add('select id, COUNT(id)');//вылазит ошибка
Adoquery1.SQL.Add('from tab1);
Adoquery1.Open;
RamireZ вне форума Ответить с цитированием
Старый 03.06.2010, 19:49   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ругается на Access violation in module msjet40.dll.
вариантов может быть огромное море!!
Начиная от глюков ОС и битым дистрибутивом Дельфи и заканчивая битой базой...

Проверяйте так.
1) запросы (ЛЮБЫЕ) к другим базам отрабатываются?
2) внутри Access этот запрос выполняется?
3) к этой базе другие запросы выполняются??! (например, банальнейший:
Код:
select * from Tab1
p.s. а вообще, на той строчке, что Вы указали, ошибки вообще не может быть! Delphi точно нормальная и рабочая?!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.06.2010, 20:07   #6
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Может быть ошибка но не там где вы указали.
При именовании столбцов в результате.
Попробуйте так:
Adoquery1.SQL.Clear;
Adoquery1.SQL.Add('select id, COUNT(id) as kol');//вылазит ошибка
Adoquery1.SQL.Add('from tab1);
Adoquery1.Open;
И еще добавьте пред Adoquery1.SQL.Clear; строчку Adoquery1.Close;.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)

Последний раз редактировалось rdama; 03.06.2010 в 20:09.
rdama вне форума Ответить с цитированием
Старый 03.06.2010, 22:47   #7
RamireZ
Студент
Пользователь
 
Аватар для RamireZ
 
Регистрация: 30.05.2008
Сообщений: 61
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вариантов может быть огромное море!!
Начиная от глюков ОС и битым дистрибутивом Дельфи и заканчивая битой базой...

Проверяйте так.
1) запросы (ЛЮБЫЕ) к другим базам отрабатываются?
2) внутри Access этот запрос выполняется?
3) к этой базе другие запросы выполняются??! (например, банальнейший:
Код:
select * from Tab1
p.s. а вообще, на той строчке, что Вы указали, ошибки вообще не может быть! Delphi точно нормальная и рабочая?!!
Проверил на 2010 и 7 делфе-одинаковый итог.
1-обрабатываются
2)выполняется
3)да

Но что самое интересное , ошибку выдает только в компиляторе, в exe-шнике ничего не наблюдается. Не хотелось бы просто так оставлять это дело. может какие параметры не отключены или что может быть?

И вот еще что хотел давно узнать:
Допустим в таблице 3 поля(id,name,surname) если пишу запрос Select id from tabname то он компилятор пишет, что не найден элемент name, если запрашиваю name-то нет id и т.п. Может потому что в овновном используются запросы вида Select * from tabname или потому что я сразу добавляю все fields в query? Никто не сталкивался с таким явлением?

Последний раз редактировалось RamireZ; 03.06.2010 в 23:41.
RamireZ вне форума Ответить с цитированием
Старый 04.06.2010, 07:12   #8
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Вот,вот именно в этом...
Цитата:
Сообщение от RamireZ Посмотреть сообщение
потому что я сразу добавляю все fields в query?
И еще старайся не пользовать конструкцию select *.
Ибо тянешь ты при этом все данные из таблицы. А зачем?
Чтоб работать с 3 из них.
А если таблица в 20 полей и 15000 записей то select * это писец. А если удаленно запросить это (не находясь в одной сети с сервером).
А если по медленному каналу связи. То все данные мы просто никогда не получим.

Выбирать надо стараться только то что надо для решения конкретной задачи. А не тянуть ворох бесполезных и не нужных данных.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)

Последний раз редактировалось rdama; 04.06.2010 в 07:17.
rdama вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать количество записей в БД ACCESS Dux БД в Delphi 22 31.03.2015 20:36
Количество записей в отчете timesoon Microsoft Office Access 4 09.06.2010 01:58
количество ячеек с одним значением (StringGrid) Кас Алина Общие вопросы Delphi 3 29.04.2010 20:40
Количество записей с 1 именем Gapro БД в Delphi 6 09.12.2009 15:31
Количество записей в FastReport4 Askat БД в Delphi 1 02.07.2007 23:37