Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по выбору из деревьев / 25 сообщений из 31, страница 1 из 2
17.05.2004, 11:27:06
    #32519888
EvgErmak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Имеется таблица работников
RABOT
------
ID, FIO, ID_PODRAZD

Имеется "древовидная" таблица подразделений
PODR
-----
ID,NAME,ID_PARENT

Помогите, пожалуйста, написать ХП по выбору работников, работающих в группе/подгруппе подразделений, типа

SELECT * FROM RABOT WHERE VHOD_GROUP(ID_PODRAZD,выбранная_группа) = 1

т.е. ХП должна возращать 1 если подразделение входит в группу,
или 0, если не входит
...
Рейтинг: 0 / 0
17.05.2004, 11:44:06
    #32519931
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Давай с начала. Ну, несколько изменим наименования идентификаторов:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Имеется таблица работников
RABOT
 ------
 
ID_RABOT, FIO, ID_PODRAZD

Имеется "древовидная" таблица подразделений
PODR
 -----
 
ID_PODRAZD,NAME,ID_PARENT

Не возражаешь?

Дальше.

Помогите, пожалуйста, написать ХП по выбору работников, работающих в группе/подгруппе подразделений, типа

SELECT * FROM RABOT WHERE VHOD_GROUP(ID_PODRAZD,выбранная_группа
) = 1

т.е. ХП должна возращать 1 если подразделение входит в группу,
или 0, если не входит

Что есть выбранная_группа ?

Может, тебе просто надо возвращать всех работников, подчиненных конкретному ID_PODRAZD?

Тогда запрос должен выглядеть примерно так:

Select * from Get_All_Rabot(From_Id_Podrazd)

Ты такого хочешь?
...
Рейтинг: 0 / 0
17.05.2004, 12:05:44
    #32519983
Admin_Vlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Вот у нас структура компании такого типа:
-----------cut------------
Аппарат управления
Секретариат
-----------cut------------

При поиске в аппарате управления находится ген.директор, а должен находится и генеральный директор и секретарша.
Как бы это реализовать? Помогите пожалуйста.
...
Рейтинг: 0 / 0
17.05.2004, 12:13:01
    #32519999
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Читай тындым-с
...
Рейтинг: 0 / 0
17.05.2004, 12:32:06
    #32520038
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Понял. Список работников данного и подчиненных подразделений.

1. Создаем процедуру, возвращающую список подразделений, подчиненных текущему Id подразделения.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE PROCEDURE Get_Tree_Podr (
    FROM_BASE_Parent_id INTEGER)
RETURNS (
   ID_PODRAZD INTEGER)
AS
DECLARE VARIABLE numrows INTEGER;
begin
  for select ID from PODR T
  where id_Parent =:FROM_BASE_Parent_id
  into :ID_PODRAZD   do begin
     suspend;  /* Считываем подразделения текущего уровня*/ 

   /* Определяем, есть ли подуровень*/ 
  select count(*)
    from PODR
    where
      id_Parent = :ID_PODRAZD into :Numrows;
  IF (
    numrows >  0 
  ) THEN
  BEGIN
    for select ID from Get_Tree_Podr(:ID_PODRAZD)
      into :ID_PODRAZD   do
         suspend;  /* Рекурсивно считываем подразделения под - уровня*/ 
  END

end

2. Формируем список сотрудников текущего (например, 12-го) подразделения и подчиненных:

Код: plaintext
1.
2.
3.
 Select x.Id_Podrazd, y.* from Get_Tree_Podr( 12 ) X, Rabot y where
  (x.Id_Podrazd = y.Id_Podrazd) or (y.Id_Podrazd =  12 )


Это все!
...
Рейтинг: 0 / 0
17.05.2004, 12:37:55
    #32520055
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Что -то с begin/end напутал...

Лучше будет, наверное, так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE PROCEDURE Get_Tree_Podr (
    FROM_BASE_Parent_id INTEGER)
RETURNS (
   ID_PODRAZD INTEGER)
AS
DECLARE VARIABLE numrows INTEGER;
begin
  for select ID from PODR T
  where id_Parent =:FROM_BASE_Parent_id
  into :ID_PODRAZD   do
     suspend;  /* Считываем подразделения, подчиненные уровню FROM_BASE_Parent_id */ 

   /* Определяем, есть ли подуровни*/ 
  select count(*)
    from PODR
    where
      id_Parent = :ID_PODRAZD into :Numrows;
  IF (
    numrows >  0 
  ) THEN
    for select ID from Get_Tree_Podr(:ID_PODRAZD)
      into :ID_PODRAZD   do
         suspend;  /* Рекурсивно считываем подразделения под - уровня*/ 

end
...
Рейтинг: 0 / 0
17.05.2004, 13:03:08
    #32520127
Admin_Vlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
То и я устал, то ли хитро очень. Пока пытаюсь логику понять.
...
Рейтинг: 0 / 0
17.05.2004, 13:28:17
    #32520215
Admin_Vlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
А, ты не подскажешь, как заставить эту процедуру выполняться при обращении к таблице?
У нас MSSQLServer.
...
Рейтинг: 0 / 0
17.05.2004, 13:29:53
    #32520219
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
авторУ нас MSSQLServer.
...
Рейтинг: 0 / 0
17.05.2004, 13:32:01
    #32520230
Admin_Vlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Нашел! exec
...
Рейтинг: 0 / 0
17.05.2004, 13:34:45
    #32520245
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
У нас MSSQLServer.

... Вашу мать...

Нашел! exec

Ну, за искусство!
...
Рейтинг: 0 / 0
17.05.2004, 14:05:53
    #32520359
EvgErmak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
2 mv : Большое спасибо за развернутый ответ!
Уже пробую ...
...
Рейтинг: 0 / 0
17.05.2004, 14:13:59
    #32520390
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Возможно, при создании рекурсивной процедуры будет ругаться по поводу ссылки на несуществующую процедуру. Тогда попробуйте сначала

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE Get_Tree_Podr (
    FROM_BASE_Parent_id INTEGER)
RETURNS (
   ID_PODRAZD INTEGER)
AS
DECLARE VARIABLE numrows INTEGER;
begin
  suspend;
end
а потом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
ALTER PROCEDURE Get_Tree_Podr (
    FROM_BASE_Parent_id INTEGER)
RETURNS (
   ID_PODRAZD INTEGER)
AS
DECLARE VARIABLE numrows INTEGER;
begin
  for select ID from PODR T
  where id_Parent =:FROM_BASE_Parent_id
  into :ID_PODRAZD   do
     suspend;  /* Считываем подразделения, подчиненные уровню FROM_BASE_Parent_id */ 

   /* Определяем, есть ли подуровни*/ 
  select count(*)
    from PODR
    where
      id_Parent = :ID_PODRAZD into :Numrows;
  IF (
    numrows >  0 
  ) THEN
    for select ID from Get_Tree_Podr(:ID_PODRAZD)
      into :ID_PODRAZD   do
         suspend;  /* Рекурсивно считываем подразделения под - уровня*/ 

end
...
Рейтинг: 0 / 0
17.05.2004, 14:18:35
    #32520410
Admin_Vlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
mv, я тебя не понимаю. Я должен родиться со знанием программирования? Я никогда этим раньше не занимался. Понимаешь?
...
Рейтинг: 0 / 0
17.05.2004, 14:18:35
    #32520411
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Ну, кирдык тебе. Проходящий такого не прощает. Покупай как минимум шлем-сферу.
...
Рейтинг: 0 / 0
17.05.2004, 14:22:06
    #32520419
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Ну, Админ, Влад! Ты чего так серьезно?

Люди сюда либо приходят либо помощи попросить, либо постебаться. Часто еще первым помогают.

Очень даже демократичный форум, вот к соседям зебредешь - там тебя сначала обос$ут, а затем и забанят. И никакой помощи не дождешься. А тут еще ничего. Должен же ты чем-то заплптить за помощь. Терпи.
...
Рейтинг: 0 / 0
17.05.2004, 14:24:15
    #32520424
Admin_Vlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
mv виртуальную?
...
Рейтинг: 0 / 0
17.05.2004, 14:24:28
    #32520428
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Admin_Vlad,

> У нас MSSQLServer.

на этом форуме обсуждается Interbase и его клоны.

> Мимопроходящий от$$$ись чмо. Не видишь я новичок.

на этом форуме мат запрещен.

> Я должен родиться со знанием программирования? Я никогда этим раньше не занимался. Понимаешь?

это вас не извиняет.

Что мне с вами делать?
...
Рейтинг: 0 / 0
17.05.2004, 14:27:12
    #32520437
Admin_Vlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
fedd, Сам ухожу. Извини, но издеватся над, можно сказать, учеником - подло.
Пока
...
Рейтинг: 0 / 0
17.05.2004, 14:29:11
    #32520449
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
mv виртуальную?

Пуленепрбиваемую. Это как минимум.
...
Рейтинг: 0 / 0
17.05.2004, 14:34:43
    #32520465
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Сдаётся мне, это был всё тот же китайский мальчик...
...
Рейтинг: 0 / 0
17.05.2004, 14:35:27
    #32520468
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Упс !!! Ну и жарко тут у вас!

Best regards,
Dnico.
...
Рейтинг: 0 / 0
18.05.2004, 03:33:23
    #32521289
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
Ну вот, а я с разницей во времени все пропустил :((((((((((((
fedd ты не мог солью пострелять? )
я бы почитал... проснулся с утра пораньше :)

сорри за оффтоп :))
...
Рейтинг: 0 / 0
18.05.2004, 16:09:44
    #32522565
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
> fedd ты не мог солью пострелять?

я только один постинг удалил, но сам же его процитировал (только с купюрами)
...
Рейтинг: 0 / 0
18.05.2004, 17:07:37
    #32522691
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по выбору из деревьев
/topic/56904&hl=%e4%e5%f0%e5%e2%ee
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по выбору из деревьев / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]