Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 559

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Проблема такая, используя компонент Query и его свойство SQL я создаю запрос. Затем мне нужно профильтровать вычисляемое в запросе поле, но оно не профильтруется. Пытался запихнуть условие фильтрации прям в свойство SQL, но выдает не понятную ошибку. Прошу помоч как можно реализовать: необходимо чтобы вывелись записи где поле sum(prisutstvie)>1, имеется ввиду поле которое мы получили после группировки, указанной в SQL коде ниже.

Приложение:
  1. select raspisanie.gruppi, student.familiya, student.imya, student.otchestvo, sum(prisutstvie)
  2. from raspisanie, zhurnalpos, student
  3. where (student.zach = zhurnalpos.zachetki)
  4. and (raspisanie.idzanyatiya=zhurnalpos.idzanyatiya)
  5. group by raspisanie.gruppi, student.familiya, student.imya, student.otchestvo
  6.  
  7.  
  8.  


fff Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: fff (статус: Посетитель)
Вопрос отправлен: 22 декабря 2009, 16:20
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, fff!
что бы фильтровать "группированное поле", существует ключевое слово HAVING (читать можно тут http://ru.wikipedia.org/wiki/HAVING и тут http://www.cyberguru.ru/database/sql/sql-standards-overview-page7.html).
Поэтому для данного запроса скорее всего должно сработать такое выражение

SELECT raspisanie.gruppi, student.familiya, student.imya, student.otchestvo, sum(prisutstvie)
FROM raspisanie, zhurnalpos, student
WHERE  (student.zach = zhurnalpos.zachetki)
AND (raspisanie.idzanyatiya=zhurnalpos.idzanyatiya)
GROUP BY raspisanie.gruppi, student.familiya, student.imya, student.otchestvo
HAVING sum(prisutstvie) > 1

Хотя конечно лучше сделать временное поле и вынести это туда, что бы два раза не вычислять суму. Но разные движки SQL это делают по разному...

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 22 декабря 2009, 17:01
Оценка за ответ: 5

Комментарий к оценке: Спасибо, работает будем думать дальше :)

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:31
Выполнено за 0.02 сек.