Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Срочно нужна помощь с SQL запросом [D5, DBISAM]


RDA ©   (2003-09-15 12:11:00) 

Что здесь не правильно?

select count(distinct IKOD) as RECCOUNT from KVR
where
YEAR=:YEAR
and
KV=:KV
and
SYM=FALSE


Пишет ошибку
DBISAM Engine Error #11949 SQL error - Rigth parentheses expected after aggregate count function argument, instead found "IKOD" in source column expression.


RDA   (2003-09-15 16:20:00) [1]

Не один из приведенных кодов под DBISAM не работает, не помог и визуальный построитель запросов от EMS он может только так
select distinct count(IKOD)
from KVR
where
YEAR=:YEAR
and
KV=:KV
and
SYM=FALSE
Но вообщем выкрутился.
Вопрос закрыт.


stone   (2003-09-15 15:58:00) [2]

Приведенный автором код работоспособен. Вероятнее всего проблема в ограничениях DBISAM


Arm79   (2003-09-15 15:54:00) [3]


> Я не знаю что такое DBISAM, но навскидку ошибка тут: count(distinct
> IKOD)
> правильнее было бы так:
> select count(*) from (
> select distinct IKOD from KVR
> where
> YEAR=:YEAR
> and
> KV=:KV
> and
> SYM=FALSE
> )


У меня подобный код работает
select count(*)
from (select distinct [table.amount] from [table])


Arm79   (2003-09-15 15:31:00) [4]

Каюсь, ступил :-((


Nikolay M.   (2003-09-15 15:28:00) [5]


> Arm79 © (15.09.03 15:20) [12]

Будет выбрано только одно значение: count(*)
:)))


Johnmen   (2003-09-15 15:25:00) [6]

>Arm79 © (15.09.03 15:20)
>А если так...

А смысл ? Неповторяющиеся значения среди одного единственного ?
:)))


Arm79   (2003-09-15 15:20:00) [7]

А если так
select distinct count(IKOD)
from KVR
where
YEAR=:YEAR
and
KV=:KV
and
SYM=FALSE


Arm79   (2003-09-15 14:03:00) [8]

? ? ?
DBISAM - это вроде бы ADO Jet не для Access, а для прочего(txt, xsl и тп), или я не прав? Тогда существует много ограничений для работы.


Johnmen   (2003-09-15 13:25:00) [9]

>stone © (15.09.03 13:15) [8]

Так не надо быть телепатом :) Все видно в запросе автора : получить количество неповторяющихся значений IKOD.

>Nikolay M. © (15.09.03 13:15)

Я не знаю, на что там намекает DBISAM Engine со своей ошибкой, но ошибки НЕТ. По кр.мере, в рамках стандарта SQL92.


Nikolay M.   (2003-09-15 13:15:00) [10]


> Как я понял, это принципиально не то, что хочет автор...

?? А как тут можно понять по-другому?
Тем более в первом посте было черным по белому написано: не хватает закрывающей скобки после аргумента функции count.

Хотя, конечно, хотелось бы заслушать начальника транспортного цеха....


stone   (2003-09-15 13:15:00) [11]


> Johnmen © (15.09.03 13:10)


Я конечно не телепат, но попытку употребления distinct я по-другому расшифровать не смог.


Johnmen   (2003-09-15 13:10:00) [12]

>Nikolay M. © (15.09.03 12:47)
>stone © (15.09.03 13:02)

Как я понял, это принципиально не то, что хочет автор...


stone   (2003-09-15 13:02:00) [13]

select ПолеДляГруппировки, count(IKOD) as RECCOUNT from KVR
where
YEAR=:YEAR
and
KV=:KV
and
SYM=FALSE
GROUP BY ПолеДляГруппировки


RDA   (2003-09-15 12:49:00) [14]

Вот что есть в хелпе
The SQL SELECT statement is used to retrieve data from tables. You can use the SELECT statement to:

• Retrieve a single row, or part of a row, from a table, referred to as a singleton select.
• Retrieve multiple rows, or parts of rows, from a table.
• Retrieve related rows, or parts of rows, from a join of two or more tables.

Syntax

SELECT [DISTINCT | ALL] * | column
[AS correlation_name | correlation_name], [column...]
[INTO [MEMORY] destination_table]
FROM [MEMORY] table_reference [AS correlation_name | correlation_name]
[[[[INNER | [LEFT | RIGHT] OUTER JOIN] [MEMORY] table_reference
[AS correlation_name | correlation_name] ON join_condition]
[WHERE predicates]
[GROUP BY group_list]
[HAVING predicates]
[ORDER BY order_list [NOCASE]]
[TOP number_of_rows]
[WITH LOCKS]
[LANGUAGE language_string SORT sort_string]
[ENCRYPTED WITH password]
[NOJOINOPTIMIZE]
[UNION [ALL] [SELECT...]]

И по дистинкту
Use DISTINCT to limit the retrieved data to only distinct rows. The distinctness of rows is based on the combination of all of the columns in the SELECT clause columns list. DISTINCT can only be used with simple column types like string and integer; it cannot be used with complex column types like blob.

Поле IKOD строка в 10 символов.


Nikolay M.   (2003-09-15 12:47:00) [15]

distinct(IKOD)
может быть?
И никаких пробелов после count & distinct


Johnmen   (2003-09-15 12:41:00) [16]

Запрос с т.з. синтаксиса в рамках стандарта верен.
Возможны какие-либо особенности реализации SQL в DBISAM...


RDA   (2003-09-15 12:27:00) [17]

Не канает

DBISAM Engine Error #11949 SQL error - End of SELECT statement expected, instead found "IKOD"


Vlad   (2003-09-15 12:20:00) [18]

Я не знаю что такое DBISAM, но навскидку ошибка тут: count(distinct IKOD)
правильнее было бы так:
select count(*) from (
select distinct IKOD from KVR
where
YEAR=:YEAR
and
KV=:KV
and
SYM=FALSE
)


Наверх

Титульная страница Поиск, карта сайта Написать письмо