|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
Hi All, Sybase SA 12.0.1 Есть таблица - спр. Организаций, где данные организаций хранятся и отображаются в виде дерева, что бы была видна иерархия организаций: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
В таблице есть такие данные: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Есть другая таблица - спр. Работников. Каждому работнику указывается в какой организации (отделе, подразделении) он работает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
В таблице есть скажем такие данные: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Мне нужно составить запрос или в крайнем случае создать хранимую процедуру, что бы она вернула данных спр. Работников в таком виде (две колонки с наименованиями): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Или в таком виде (т.е. одна колонка с наименованиями): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
То есть данные работников отображаются в виде иерархии их организаций и при этом если у организации нет работника, то она в этом запросе не должна отображаться. Уже всю голову сломал, думая как можно сделать такой запрос, помогите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2011, 17:44 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
Еще забыл добавить, что запрос или хранимая процедура, которая будет возвращать данные спр. Работников обязательно должна возвращать значения полей ID и SUBID (скорее всего заново сгенеренных), что бы можно было из этой выборки на клиенте построить дерево в компоненте типа DBTreeView. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2011, 17:56 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
Stalker4Уже всю голову сломал, думая как можно сделать такой запрос, помогите пожалуйста.А не надо делать такой запрос. Сделай просто: Код: plaintext 1. 2. 3.
Все просто и легко. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2011, 18:50 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
White OwlStalker4Уже всю голову сломал, думая как можно сделать такой запрос, помогите пожалуйста.А не надо делать такой запрос. Сделай просто: Код: plaintext 1. 2. 3.
Все просто и легко.Это не годится, так как результат после такой пробежки не будет соответствовать иерархии организаций и в самом результате все ветки будут первого уровня с одной вложенностью - фактически это получиться группировка по организации. А мне нужен именно вывод данных спр. работников в соответствии с иерархией их организаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2011, 23:05 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
Stalker4А мне нужен именно вывод данных спр. работников в соответствии с иерархией их организаций. Это смотрел? http://www.sql.ru/faq/faq_topic.aspx?fid=203 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2011, 02:02 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
Коллега не судите строго, два ночи все таки. Думаю это вам подойдет. (Такой запрос не учитывает Stalker4если у организации нет работника, то она в этом запросе не должна отображаться) Это допилите сами. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2011, 02:26 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
Stalker4, Обратите внимание на классические алгоритмы работы с деревьями. Почитайте, например, http://www.getinfo.ru/article610.html Кроме того, обратите внимание на рекурсивные запросы -[ WITH temporary-views ] SELECT ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2011, 11:06 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
On 02.07.2011 18:44, Stalker4 wrote: Учтите, что сделать обход дерева чисто на SQL, одним запросом -- невозможно. Нужно писать хранимую процедуру. Алгоритмы обхода дерева хорошо известны и описаны, можете поглядеть напр. на algolist.ru. На TSQL реализуются достаточно легко. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2011, 15:14 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
On 04.07.2011 16:14, MasterZiv wrote: > Учтите, что сделать обход дерева чисто на SQL, одним запросом -- невозможно. Извините, написал про стандартный SQL и ASE, не увидел, что там ASA. В ASA с запросом с WITH можно обойти дерево (правда это уже не совсем SQL). Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2011, 15:16 |
|
Помогите написать сложный древовидный запрос для Sybase SA 12
|
|||
---|---|---|---|
#18+
White OwlStalker4А мне нужен именно вывод данных спр. работников в соответствии с иерархией их организаций. Это смотрел? http://www.sql.ru/faq/faq_topic.aspx?fid=203 Рекурсивные запросы я конечно смотрел. И если бы речь шла о простой древовидной выборке, то этот вариант я бы и использовал. Но тут есть пара сложностей, которые я не знаю как решить в рамках этого рекурсивного запроса: 1) Так как в одной организации может быть несколько работников, то в конечной выборке в общем варианте может быть несколько строк с одинаковым кодом организации (ORGANIZATION.ID или ORGANIZCODE), а ведь это поле является ПК в спр. организаций по которому строиться дерево организацией. То есть это поле не должно дублироваться в конечной выборке. Что бы это исправить, в конечной выборке все строки с одинаковой организацией должны стать детьми одной строки с дублирующейся организацией либо в выборку должна быть добавлена фиктивная строка с дублирующейся организацией и все такие же дублирующие организации должны стать ее детьми плюс должны быть сформированы новые поля ID и SUBID по которым будет строиться новое дерево. 2) Как я уже написал выше "данные работников отображаются в виде иерархии их организаций и при этом если у организации нет работника, то она в этом запросе не должна отображаться". Тут есть одно маленькое уточнение: если у самой организации нет работника, но он есть у одного из ее детей, то такая организация должна отображаться в конечной выборке. В прочем оба эти момента ИМНО вполне отражены в тех данных и в конечных ожидаемых результатах выборки, которые я привел в первом своем сообщении. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2011, 18:23 |
|
|
start [/forum/topic.php?fid=55&msg=37334094&tid=2010283]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 135ms |
0 / 0 |