Есть ли какой-либо известный шаблон/алгоритм, как правильно сортировать или фильтровать список записей (из базы данных)? Моя текущая попытка связана с использованием формы, которая предоставляет некоторые параметры фильтрации и сортировки, а затем добавляет эти критерии и алгоритм сортировки к существующему SQL. Тем не менее, я считаю, что можно легко злоупотреблять тем, что пользователи могут получить результаты, которые они не должны видеть.Отчеты о сортировке и фильтрации
Приложение, которое я создаю, представляет собой планировщик, в котором хранятся все события в таблице базы данных. Затем в зависимости от уровня пользователя/роли/привилегии будет отображаться другой поднабор данных. Поэтому мой запрос может быть так сложно, как
SELECT *
FROM app_event._event_view
WHERE ((class_id = (SELECT class_id FROM app_event._ical_class WHERE name = 'PUBLIC') AND class_id != (SELECT class_id FROM app_event._ical_class WHERE name = 'PRIVATE') AND class_id != (SELECT class_id FROM app_event._ical_class WHERE name = 'CONFIDENTIAL')) OR user_id = '1')
AND calendar_id IN (SELECT calendar_id FROM app_event.calendar WHERE is_personal = 't')
AND calendar_id = (SELECT calendar_id FROM app_event.calendar WHERE name = 'personal')
AND state_id IN (1,2,3,4,5,6) AND EXTRACT(year FROM dtstart) = '2008'
AND EXTRACT(month FROM dtstart) = '11'
Поскольку я больше заботы о служении правильное подмножество информации, производительность не является серьезной проблемой в данный момент (как SQL упоминалось был сгенерирован скриптом, п по пункт). Я имею в виду превратить все эти сложные SQL-предложения в представления, поэтому будет меньше шансов, что генерируемый SQL не подходит.
критерии на самом деле не являются серьезной проблемой здесь, я ищу лучший способ сделать фильтрацию и сортировку .... в sql-запросе он фактически считает, может ли пользователь читать свои записи, является ли запись в правильной категории, правильное состояние и т. д. – Jeffrey04 2008-11-17 08:54:56