Попробовал по вашему примеру сделать на 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([системная плата]);
|
Но тогда просто выводятся все записи с поля системная плата, но не количество. :( А вот http://www.w3schools.com/sql/func_count_distinct.asp пишут, что DISTINCT c COUNT не работают вместе в Access, только в Oracle и SQL-Server. Получилось следующее:
| Код | SELECT [системная плата], COUNT(*) AS количество FROM [главная таблица] GROUP BY [системная плата]; |
Такой запрос выводит название записи по указанному полю и количество таких записей, а можно ли как-то выводить количество по нескольким полям?
|