Фильтрация результата MySQL в Delphi - PullRequest
1 голос
/ 06 апреля 2011

У меня проблема с определенным требованием к одному из моих домашних заданий. Я должен взять список студентов и распечатать всех студентов с кредитными часами 12 или более. Кредитные часы хранятся в отдельной таблице и ссылаются на третью таблицу в основном, таблица студентов, таблица классов с часами и зарегистрированная таблица, соответствующая идентификатору студента и идентификатору курса

Я использовал SUM-агрегат, сгруппированный по имени по таблицам, и все это прекрасно работает, но я не совсем понимаю, как отфильтровать людей менее чем за 12 часов, поскольку SQL не знает, сколько часов каждый принимает, пока не выполнит запрос.

моя строка выглядит так


'SELECT Students.Fname, SUM(Classes.Crhrs) AS Credits 
FROM Students, Classes, Enrolled 
WHERE Students.ID = Enrolled.StudentID AND Classes.ID = Enrolled.CourseID 
GROUP BY Students.Fname;'

Он отлично работает и показывает сетку в проекте Delphi, но я не знаю, куда идти, чтобы отфильтровать результаты, так как каждый запуск запроса удаляет предыдущий.

Ответы [ 2 ]

8 голосов
/ 06 апреля 2011

Поскольку это домашнее задание, я дам очень короткий ответ: посмотрите документацию для HAVING.

2 голосов
/ 06 апреля 2011

Помимо получения желаемого результата непосредственно из SQL, как предложил Мартейн, в наборах данных Delphi также есть способы фильтрации данных на «клиентской стороне».Проверьте свойство Filter и запись OnFilter.

В любом случае, помните, что обычно лучше применять лучший "фильтр" на стороне базы данных , используя правильный SQL, а затем использовать сторону клиента "Фильтры "только для того, чтобы разрешить разные представления для уже полученного набора данных, без повторного запроса одних и тех же данных, тем самым сохраняя некоторые ресурсы базы данных и пропускную способность (при условии, что данные на сервере за это время не изменились ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...