Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.06;
Скачать: CL | DM;

Вниз

Срочно нужна помощь с SQL запросом   Найти похожие ветки 

 
RDA ©   (2003-09-15 12:11) [0]

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

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.


 
Vlad ©   (2003-09-15 12:20) [1]

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


 
RDA ©   (2003-09-15 12:27) [2]

Не канает

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


 
Johnmen ©   (2003-09-15 12:41) [3]

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


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

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


 
RDA ©   (2003-09-15 12:49) [5]

Вот что есть в хелпе
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 символов.


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

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


 
Johnmen ©   (2003-09-15 13:10) [7]

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

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


 
stone ©   (2003-09-15 13:15) [8]


> Johnmen © (15.09.03 13:10)


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


 
Nikolay M. ©   (2003-09-15 13:15) [9]


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

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

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


 
Johnmen ©   (2003-09-15 13:25) [10]

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

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

>Nikolay M. © (15.09.03 13:15)

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


 
Arm79 ©   (2003-09-15 14:03) [11]

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


 
Arm79 ©   (2003-09-15 15:20) [12]

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


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

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

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


 
Nikolay M. ©   (2003-09-15 15:28) [14]


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

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


 
Arm79 ©   (2003-09-15 15:31) [15]

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


 
Arm79 ©   (2003-09-15 15:54) [16]


> Я не знаю что такое 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])


 
stone ©   (2003-09-15 15:58) [17]

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


 
RDA ©   (2003-09-15 16:20) [18]

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



Страницы: 1 вся ветка

Текущий архив: 2003.10.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
1-18424
Deb
2003-09-24 22:40
2003.10.06
многострочный RadioButton


1-18407
Тимохов
2003-09-24 16:49
2003.10.06
Вопрос по Excel из Delphi.


3-18227
Fuelfire
2003-09-17 07:44
2003.10.06
Программное добавление и определение колонки в DBGrid


11-18286
Kladov
2003-01-23 15:15
2003.10.06
Конкурс на самую короткую реализацию Double2Str


11-18282
blackalex
2003-01-27 13:24
2003.10.06
При закрытии модальных окон не выполняется OnClose