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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2009, 17:16   #11
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

дело в том, что если просто выборка и extract, то все ок, а если делать группировку еще по чем-либо или вычисляемые поля, то ошибка capability not supported
pobedin вне форума Ответить с цитированием
Старый 02.09.2009, 18:01   #12
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от pobedin Посмотреть сообщение
дело в том, что если просто выборка и extract, то все ок, а если делать группировку еще по чем-либо или вычисляемые поля, то ошибка capability not supported
моя твоя не понимай
текст запроса с группировкой в студию
soleil@mmc вне форума Ответить с цитированием
Старый 03.09.2009, 09:04   #13
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

я тоже себя не понимать =) вот этот не идет
Код:
begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT prihod.KOD_PROD, SUM( prihod.KOL_KG ) SUM_OF_KOL_KG, SUM( prihod.KOL_M ) SUM_OF_KOL_M, EXTRACT(MONTH FROM DATA_V) AS MM ');
    SQL.Add('FROM prihod');
    SQL.Add('WHERE (prihod.DATA_V<="'+datetostr(datetimepicker1.Date)+'")');
    SQL.Add('GROUP BY prihod.KOD_PROD, EXTRACT(MONTH FROM DATA_V)');
    Open;
    end;
а этот идет...
Код:
  
begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT prihod.KOD_PROD, EXTRACT(MONTH FROM DATA_V) AS MM ');
    SQL.Add('FROM prihod');
    SQL.Add('WHERE (prihod.DATA_V<="'+datetostr(datetimepicker1.Date)+'")');
    Open;
    end;
pobedin вне форума Ответить с цитированием
Старый 03.09.2009, 09:26   #14
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
Восклицание

А это все потому, что у тебя в первом примере синтаксис не соблюден... )))
Код:
begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT prihod.KOD_PROD, EXTRACT(MONTH FROM DATA_V) AS MM, SUM( prihod.KOL_KG ) SUM_OF_KOL_KG, SUM( prihod.KOL_M ) SUM_OF_KOL_M ');
    SQL.Add('FROM prihod');
    SQL.Add('WHERE (prihod.DATA_V<="'+datetostr(datetimepicker1.Date)+'")');
    SQL.Add('GROUP BY prihod.KOD_PROD, EXTRACT(MONTH FROM DATA_V)');
    Open;
    end;
В запросе столбцы должны быть в том же порядке, что и в группировке, а после - вычисляемые поля ))

Возможно даже, что GROUP BY [B]prihod.KOD_PROD, MM пройдет - точно не помню...
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 03.09.2009, 09:45   #15
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

не поверите, но так та же самая ошибка : capability not supported!
pobedin вне форума Ответить с цитированием
Старый 03.09.2009, 09:58   #16
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Можешь почитать об этом здесь... В кратце: версия BDE не может разобрать твой запрос. Скорее всего, функции в GROUP BY не поддерживаются... А MM вместо EXTRACT(..) то же самое выдает?
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 03.09.2009, 10:03   #17
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

MM выдает Invalid field name!
pobedin вне форума Ответить с цитированием
Старый 03.09.2009, 10:10   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В запросе столбцы должны быть в том же порядке, что и в группировке, а после - вычисляемые поля ))
Вы ошибаетесь! это не так!! (попробуйте сами - поля могут идти в ЛЮБОМ ПОРЯДКЕ (и они могут даже не совпадать: select sum(KUKU) from tablica group by TUTU )

Цитата:
Сообщение от SuperVisor
В кратце: версия BDE не может разобрать твой запрос. Скорее всего, функции в GROUP BY не поддерживаются...
SuperVisor, +1 полностью согласен.
Цитата:
А MM вместо EXTRACT(..) то же самое выдает?
это думаю, можно не проверять - не сработает (MM ещё не известен)
а вот стоит попробовать вложенный запрос вот так:
Код:
 SELECT  KOD_PROD, MM, SUM( KOL_KG ) SUM_OF_KOL_KG, SUM( KOL_M ) SUM_OF_KOL_M
     FROM  (SELECT prihod.KOD_PROD, EXTRACT(MONTH FROM DATA_V) AS MM, KOL_KG, KOL_M   
            FROM prihod
            WHERE (prihod.DATA_V<="'+datetostr(datetimepicker1.Date)+'")')
            )
 GROUP BY KOD_PROD, MM
P.S. кстати, вместо datetostr рекомендую использовать параметрический запрос (параметер вместо даты)!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.09.2009, 10:30   #19
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

Код:
   Close;
    SQL.Clear;
    SQL.Add('SELECT  KOD_PROD, MM, SUM( KOL_KG ) SUM_OF_KOL_KG, SUM( KOL_M ) SUM_OF_KOL_M');
    Sql.Add('FROM (SELECT prihod.KOD_PROD, EXTRACT(MONTH FROM DATA_V) AS MM, KOL_KG, KOL_M');
    Sql.Add('FROM prihod ');
    Sql.Add('where (prihod.DATA_V<="'+datetostr(datetimepicker1.Date)+'")');
    SQL.Add('GROUP BY KOD_PROD, MM');
    Open;
компилится, а при попытке выполнить ругается на select 2 строки =( резать даты вручную что ли...
pobedin вне форума Ответить с цитированием
Старый 03.09.2009, 10:52   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

pobedin
рекомендую перед Open вывести текст запроса куда-нибудь (например, кинуть на форму Memo в Memo вывести текст запроса:
Memo1.Text := SQL.Text;

я вижу, что, как минимум не хватает скобки:
Код:
 ...
    Sql.Add('FROM prihod ');
    Sql.Add('where (prihod.DATA_V<="'+datetostr(datetimepicker1.Date)+'")');
    SQL.Add(') ');
    SQL.Add('GROUP BY KOD_PROD, MM');
а вообще, может быть Ваша СУБД или BDE и не поддерживают вложенные запросы...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кредит, расчет. valerij Microsoft Office Excel 6 14.04.2009 23:15
Расчет движения voodoomedved Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 25.02.2009 23:07
Расчет численности популяции MyVLink Паскаль, Turbo Pascal, PascalABC.NET 2 07.06.2008 05:30
Расчет средневзешенного zoman Microsoft Office Excel 2 05.12.2007 10:15
Расчет стажа работы John_chek Общие вопросы Delphi 6 13.04.2007 13:38