еще об и иерархии

Tаrantino
Дата: 14.10.2003 09:56:56
такая ситуация, есть таблица в которой иерархически организован справочник подразделений, есть таблица пользователей этих подразделений.

И есть некая табличка с документами, каждый документ закреплен за отдельным пользователем.

Пользователи могут быть как простыми так и руководителями, причем простой пользователь должен видеть только свои документы (легко организовывается), руководитель видит свои документы и пользователей своего подразделения (тоже легко организовывается), но есть и такое понятие как "супер руководитель" он соотвественно видит свои документы и пользователей своего подразделения но в добавок к этому он должен видит документы подчиненных подрезделений и их пользователей. Как это лучше всего организовать?
Alex Antonoff
Дата: 14.10.2003 10:03:21
сделай функцию, которая возвращает список дочерних подразделений и пересекай их с документами
Tаrantino
Дата: 14.10.2003 10:04:46
т.е. функция должна возвращать список дочерних подразделений?
Tаrantino
Дата: 14.10.2003 10:20:45
с функцией разберусь, хотя раньше их не писал и никогда не использовал. прошелся поиском и нашел примеры фукнцию которые могут вернуть мне необходимый список подразделений, будем считать что она уже есть. Тогда запрос который должен вернуть список документов, будет выглядить примерно так:

SELECT
t1.*
FROM
tUserDocuments t1
WHERE
(t1.UserName = SYSTEM_USER OR
t1.UserName EXISTS (SELECT * FROM tUsers t2
WHERE
DepartID IN GETCHILDDEPART(SYSTEM_USER)
))

где GETCHILDDEPART соотвественно возвращает список подразделений, если он простой пользователь то список пустой, если руководитель то там только его подразделение, если супер руководитель то его и подчиненные подразделения
Alex Antonoff
Дата: 14.10.2003 10:42:15
Ну вот, GETCHILDDEPART именно эта функция