Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
20 / 20 / 1
Регистрация: 03.01.2013
Сообщений: 184
1

Цикл для дерева

27.02.2013, 10:51. Показов 1636. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Я начал изучать pl/sql для Oracle, по работе необходимо стало.
Начну с легкого описания:
--Есть таблица, TREE(id, name, child, salary)
--Надо заполнить её порядком, ну около, 50.000 записей.
Собственно в чем сложность или моё не понимание, как заполнить её через цикл, но при таких условиях, что имеется "некое кол-во правящих", у них есть свои в подчинении "начальники отделов", у "начальников" есть "нижестоящие работяги" и так ниже и ниже.
Условия такие, что случайным образом должно быть сгенерирование число вложений.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2013, 10:51
Ответы с готовыми решениями:

В рабочей программе добавить для дерева бинарного поиска нахождение отрицательных значений узлов дерева
Полностью готовая программа, но что дописать в мейне чтобы он выводил произведение отрицательных...

Биологический цикл жизни дерева
РЕБЯТА ПОМОГИТЕ ПОЖАЛУЙСТА.ЕСТЬ ИСХОДНИК НА ПАСКАЛЕ.ЗАПУСКАЮ ВЫДАЕТ ОШИБКУ 113.НАШЛА В ИНЕТЕ...

проиллюстрировать жизненный цикл дерева
проиллюстрировать жизненный цикл дерева. от маленького до бльшого, когда оно становится большим оно...

Для каждого бинарного дерева выполнить преобразование дерева в список, результат вывести в виде списка списков
Объясните почему не работает, задание было таким " Дан список, элементы которого — непустые...

5
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
27.02.2013, 20:00 2
разъясните назначение полей в таблице. child - ссылка на подчиненного?
0
20 / 20 / 1
Регистрация: 03.01.2013
Сообщений: 184
27.02.2013, 20:50  [ТС] 3
ну, я скорее всего не "грамотно" обозвал, это по иди id parent, по которому определяется должно, является ли он начальником( к примеру директором - null ) или он рядовой подчиненный с значением = 20, где уже это к примеру "уборщица".

Добавлено через 13 минут
ну, я скорее всего не "грамотно" обозвал, это по иди id parent, по которому определяется должно, является ли он начальником( к примеру директором - null ) или он рядовой подчиненный с значением = 20, где уже это к примеру "уборщица".

Собственно мне надо понять как реализовать в цикле заполнение дерева.

Oracle 11 SQL
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 TABLE EMP
(
  ID_EMP NUMBER PRIMARY KEY,
  NAME VARCHAR2(10),
  CHILD_EMP NUMBER references EMP(ID_EMP)
);
/
 
DECLARE
I NUMBER :=1;
TOPIC VARCHAR2(10);
CHILD_EMP NUMBER :=0;
R NUMBER :=0;
BEGIN
  WHILE I<21
  LOOP
    
    CHILD_EMP = ????????
 
    TOPIC := 'topic '|| TO_CHAR(I);    
    INSERT INTO EMP(ID_EMP, TOPIC, CHILD_EMP)
    VALUES(I, TOPIC, CHILD_EMP);
    I:=I+1;
  END LOOP;
END;
/

Вот что надо написать/добавить чтоб CHILD_EMP адекватно реагировало на заполнение при условии что оно является внешним ключом на ID_EMP
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
27.02.2013, 21:38 4
например так:
Генерируете случайное число от 0 до 10 (dbms_random.value(0, 10)).
Если получилось число из диапазона 0-1 (добавление корня) - присваиваете CHILD_EMP := null;
Если получилось число из диапазона 5-10 (добавление соседа) - присваиваете CHILD_EMP := prevParent; Где prevParent - значение CHILD_EMP из предыдущей итерации цикла.
Если получилось число из диапазона 2-4 (добавление потомка) - присваиваете CHILD_EMP := i;
0
20 / 20 / 1
Регистрация: 03.01.2013
Сообщений: 184
27.02.2013, 22:20  [ТС] 5
Цитата Сообщение от turbanoff Посмотреть сообщение
например так:
Если получилось число из диапазона 5-10 (добавление соседа) - присваиваете CHILD_EMP := prevParent; Где prevParent - значение CHILD_EMP из предыдущей итерации цикла.
т.е. вы хотите сказать, текущую I = I - 1; так как предыдущую итерацию я так понял.
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
28.02.2013, 07:22 6
Имеется ввиду значение CHILD_EMP из предыдущей итерации.
Если на предыдущей итерации добавляли корень, то prevParent = null.
Если на предыдущей итерации добавляли потомка, то i-1.
Если на предыдущей итерации добавляли соседа, то значение CHILD_EMP не 2 итерации назад.

Просто запоминайте CHILD_EMP в другой переменной в конце итерации.
Oracle 11 SQL
15
16
17
18
19
    I:=I+1;
    prevParent := CHILD_EMP;
   END LOOP;
 END;
 /
0
28.02.2013, 07:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2013, 07:22
Помогаю со студенческими работами здесь

Операции над бинарными деревьями: построение дерева, обход дерева, вставка и удаление элемента дерева
Пожалуйста кто сможет, помогите составить программу: Организация по трудоустройству населения...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать...

Цикл: Используя цикл while, выведите на экран для числа 2 его степени от 0 до 20
Используя цикл while, выведите на экран для числа 2 его степени от 0 до 20. Возведение в степень в...

Нормально ли для системы один и тот же цикл запускать цикл 20 раз в секунду с итерацией до 1000
Нормально ли для системы один и тот же цикл запускать цикл 20 раз в секунду с итерацией до 1000?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru