powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по выбору из деревьев
25 сообщений из 31, страница 1 из 2
Вопрос по выбору из деревьев
    #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
Вопрос по выбору из деревьев
    #32519931
Фотография 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
Вопрос по выбору из деревьев
    #32519983
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у нас структура компании такого типа:
-----------cut------------
Аппарат управления
Секретариат
-----------cut------------

При поиске в аппарате управления находится ген.директор, а должен находится и генеральный директор и секретарша.
Как бы это реализовать? Помогите пожалуйста.
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32519999
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай тындым-с
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520038
Фотография 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
Вопрос по выбору из деревьев
    #32520055
Фотография 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
Вопрос по выбору из деревьев
    #32520127
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То и я устал, то ли хитро очень. Пока пытаюсь логику понять.
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520215
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ты не подскажешь, как заставить эту процедуру выполняться при обращении к таблице?
У нас MSSQLServer.
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520219
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ нас MSSQLServer.
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520230
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел! exec
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520245
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас MSSQLServer.

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

Нашел! exec

Ну, за искусство!
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520359
EvgErmak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mv : Большое спасибо за развернутый ответ!
Уже пробую ...
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520390
Фотография 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
Вопрос по выбору из деревьев
    #32520410
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mv, я тебя не понимаю. Я должен родиться со знанием программирования? Я никогда этим раньше не занимался. Понимаешь?
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520411
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, кирдык тебе. Проходящий такого не прощает. Покупай как минимум шлем-сферу.
...
Рейтинг: 0 / 0
Вопрос по выбору из деревьев
    #32520419
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, Админ, Влад! Ты чего так серьезно?

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

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

> У нас MSSQLServer.

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

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

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

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

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

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

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

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

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

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


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