SELECT sub.date, sub.FIO, sub.[Sum-premya]
FROM [SELECT bonus.date, bonus.FIO, Sum(bonus.premya) AS [Sum-premya]
FROM bonus GROUP BY bonus.date, bonus.FIO]. AS sub
WHERE (((sub.date)=[d]) AND ((sub.FIO)=[n]));
запрос из Access в Delphi
в access это работает а в делфи нет. Использую компонент ADOQuery
Код:
Цитата: krilya
в access это работает а в делфи нет.
Завершающую точку с запятой убери.
убираю скобки лезут другие ошибки, например: "Ошибочное или пропущенное зарезервированное слово или аргумент в инструкции SELECT или неверная пунктуация."
В качестве альтернативы хотел избавиться от вложенности запросов(прошу прощения за терминологию). Думал сделать 2 использовать AdoQuery. Но не знаю как результат запуска первого запроса подставить во второй.
Цитата: krilya
Код:
SELECT sub.date, sub.FIO, sub.[Sum-premya]
FROM [SELECT bonus.date, bonus.FIO, Sum(bonus.premya) AS [Sum-premya]
FROM bonus GROUP BY bonus.date, bonus.FIO]. AS sub
WHERE (((sub.date)=[d]) AND ((sub.FIO)=[n]));
FROM [SELECT bonus.date, bonus.FIO, Sum(bonus.premya) AS [Sum-premya]
FROM bonus GROUP BY bonus.date, bonus.FIO]. AS sub
WHERE (((sub.date)=[d]) AND ((sub.FIO)=[n]));
А зачем здесь еще подзапрос? Разве вот такое вот:
Код:
SELECT date, FIO, SUM(premya) AS sum_premya
FROM bonus
WHERE date=:d AND FIO=:n
GROUP BY date, FIO
FROM bonus
WHERE date=:d AND FIO=:n
GROUP BY date, FIO
будет давать другой результат?
нашел еще багу
Код:
sql := 'SELECT date, FIO, SUM(premya) AS sum_premya';
AdoQuery1.SQL.Add (sql);
AdoQuery1.SQL.Add (sql);
Проблема со скобками в выражении SUM(premya). В таком виде вылетает с ошибкой в отладчик. Если убрать закрывающую скобку из выражения добавляется нормально. Запрос естественно не работает.
P.S. Подзапрос... понятия не имею зачем он мне нужен был. Просто из-за отсутствия опыта сначала делаю запросы в конструкторе access
Цитата: krilya
нашел еще багу
Проблема со скобками в выражении SUM(premya). В таком виде вылетает с ошибкой в отладчик. Если убрать закрывающую скобку из выражения добавляется нормально.
Код:
sql := 'SELECT date, FIO, SUM(premya) AS sum_premya';
AdoQuery1.SQL.Add (sql);
AdoQuery1.SQL.Add (sql);
Проблема со скобками в выражении SUM(premya). В таком виде вылетает с ошибкой в отладчик. Если убрать закрывающую скобку из выражения добавляется нормально.
Да? Мистика. Ну попробуйте не Add использовать, а сформировать сразу весь запрос и добавить его через AdoQuery1.SQL.Text:=sql;. Кстати, прежде чем добавлять к запросу строки (Add) Вы вызываете AdoQuery1.SQL.Clear ?
Цитата: krilya
P.S. Подзапрос... понятия не имею зачем он мне нужен был. Просто из-за отсутствия опыта сначала делаю запросы в конструкторе access
Это к вопросу о том, с чего нужно начинать. Не хвататься сразу за конструкторы и мастера, а сначала полистать книжку по SQL )).
AdoQuery1.SQL.Clear - да вызываю
пробовал по разному разбить строку
AdoQuery1.SQL.Add (')'); - глючит даже так, ниче не понимаю :(
P.S. книжку по sql с удовольствием почитаю. но пока начальство.. сроки... и за делфей если чесно сижу месяц... не мое..
Цитата: krilya
я использую в базе формат даты: день.месяц.число а в AdoQuery надо указывать месяц.день.число В принципе не страшно, но можно как нибудь этот порядок поменять?
Воспользоваться параметрами.
в программеперебираю результат запроса и использую if.. then.. вместо WHERE... Может не очень красисо.. но работает