Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COUNT(*) 
:(
    Опции темы
seer
Дата 30.4.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 25.4.2006

Репутация: -1
Всего: нет



Open не проходит, вылетает ошибка "AdoQuery: Field 'Код' not found.".
не пойму в чем причина..

Код

ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT COUNT(*) FROM Users');
ADOQuery.Open;
temp := ADOQuery.Fields[0].AsInteger;
ADOQuery.Close;



Аналогичная ошибка вылетает и при этом коде:

Код

ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT COUNT(НазваниеСтолбца) FROM Users');
ADOQuery.Open;
temp := ADOQuery.Fields[0].AsInteger;
ADOQuery.Close;


Это сообщение отредактировал(а) Rodman - 22.5.2008, 09:05
PM MAIL   Вверх
The Thing
Дата 30.4.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 286
Регистрация: 6.9.2004

Репутация: нет
Всего: 3



поидее, должно работать.. smile  


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Vit
Дата 30.4.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



А так?

Код

ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT COUNT(*) FROM [Users]');
ADOQuery.Open;
temp := ADOQuery.Fields[0].AsInteger;
ADOQuery.Close;


Это сообщение отредактировал(а) Rodman - 22.5.2008, 09:06


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
vv3
Дата 2.5.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 29.4.2006

Репутация: нет
Всего: нет



А БД какая? А имена полей русские, да? А тогда... все очень плёхо... COUNT(*) - , будет давать ошибку, а COUNT("Код") - сработает... smile 
PM MAIL   Вверх
The Thing
Дата 13.5.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 286
Регистрация: 6.9.2004

Репутация: нет
Всего: 3



т.е..COUNT("Код")  даст тот же результат с русскими полями, что и COUNT(*)?
А еслди поля смешанные.. есть и русские и англ.. 


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
bas
Дата 13.5.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: 1
Всего: 2



Цитата(The Thing @  13.5.2006,  12:47 Найти цитируемый пост)
COUNT("Код")  даст тот же результат с русскими полями, что и COUNT(*)?

COUNT(*) - выдаст обшее кол-во записей включая и содержашие NULL значения

COUNT("[Код]")- выдаст кол-во записей содержашие значения, NULL значения - отсекуться. 
PM MAIL   Вверх
Veniamin
Дата 21.5.2008, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 3.3.2005

Репутация: нет
Всего: нет



Подскажите с COUNT пожалуйста. Можно ли как-то с помощью COUNT вывести не только количество, но и само поле, по которому выводится количество? Или как с помощью COUNT подсчитать число повторяющихся записей в таблице в одном запросе?
PM MAIL   Вверх
Данкинг
Дата 22.5.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Veniamin @  22.5.2008,  00:58 Найти цитируемый пост)
Можно ли как-то с помощью COUNT вывести не только количество, но и само поле, по которому выводится количество?


Это?
Код

select distinct pole, count (*) from base 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Veniamin
Дата 22.5.2008, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 3.3.2005

Репутация: нет
Всего: нет



Попробовал по вашему примеру сделать на SQL Server 2000 в базе SHOP, в таблице Main, по полю product
Код

use SHOP;
select distinct product , count(*) from Main;

Query Analyzer выдаёт следующую ошибку: Column 'Main.product' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
Всё разобрался! Нужно было добавить групировку: 
Код

use SHOP;
select distinct product , count(*) as kolichestvo from Main group by product;

Но теперь возникли трудности в Delphi при работе с базой из Access, в которой поля с русскими названиями. Вот на такой запрос выводится ошибка.
Код

SELECT  DISTINCT [системная плата] COUNT(*)  FROM [главная таблица]
GROUP BY [системная плата];

Ошибка синтаксиса: (пропущен оператор) в выражении запроса '[системная плата] COUNT(*).
Попробовал по другому:
Код

SELECT  [системная плата] FROM [главная таблица] GROUP BY [системная плата] HAVING COUNT([системная плата]);

Но тогда просто выводятся все записи с поля системная плата, но не количество. :(
А вот здесь пишут, что DISTINCT c COUNT не работают вместе в Access, только в Oracle и SQL-Server. 
Получилось следующее:
Код
SELECT [системная плата], COUNT(*)  AS количество FROM [главная таблица] 
GROUP BY [системная плата];

Такой запрос выводит название записи по указанному полю и количество таких записей, а можно ли как-то выводить количество по нескольким полям?


Это сообщение отредактировал(а) Veniamin - 22.5.2008, 11:03
PM MAIL   Вверх
MetalFan
Дата 22.5.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: нет
Всего: 128



я чтото не понял, зачем в данном случае и DISTINCT и GROUP BY?

Это сообщение отредактировал(а) MetalFan - 22.5.2008, 22:32


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Данкинг
Дата 22.5.2008, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(MetalFan @  22.5.2008,  23:32 Найти цитируемый пост)
я чтото не понял, зачем в данном случае и DISTINCT и GROUP BY?

Да, GROUP BY тоже надо использовать, я просто забыл про него в своём примере.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
MetalFan
Дата 23.5.2008, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: нет
Всего: 128



Цитата(Данкинг @  22.5.2008,  22:39 Найти цитируемый пост)
GROUP BY тоже надо использовать

в данном случае
Цитата(Veniamin @  22.5.2008,  10:00 Найти цитируемый пост)
SELECT  DISTINCT [системная плата] COUNT(*)  FROM [главная таблица]
GROUP BY [системная плата];

DISTINCT вроде как ни к чему


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Deniz
Дата 23.5.2008, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Цитата(MetalFan @  23.5.2008,  11:07 Найти цитируемый пост)
DISTINCT вроде как ни к чему 
однозначно не нужен.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Veniamin
Дата 24.5.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 3.3.2005

Репутация: нет
Всего: нет



DISTINCT может быть и не нужен, но без запятой перед COUNT-ом запрос не будет работать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0984 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.