Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Есть четрые таблицы operation_class, operation_influence_pkg, operation_type_influence, operation_type. Нужно создать массив значение на основе таблицы operation_type_influence, которая содержит ссылки на таблицы operation_type,operation_influence_pkg. Если не трудно, посоветуйте ка лучше это сделать.
12 июл 07, 08:19    [4381388]     Ответить | Цитировать Сообщить модератору
 Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Хотелось бы на примере каком-нибудь посмотреть как лучше сделать.
12 июл 07, 08:23    [4381398]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
Думаешь все поймут что и из чего тебе надо сделать?
12 июл 07, 08:24    [4381399]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Сейчас зарисую таблички
12 июл 07, 08:25    [4381404]     Ответить | Цитировать Сообщить модератору
 Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Create table operation_type_influence
(INFLUENCE_ID NUMBER <PK>
INFLUENCE_TYPE NUMBER <FK2>
INFLUENCE_CLASS NUMBER <FK2>
DEPENDENT_TYPE NUMBER <FK1>
DEPENDENT_CLASS NUMBER <FK1>
PACKAGE_ID NUMBER <FK3>
)

Create table operation_type(
opr_type_id NUMBER <PK>
class_id NUMBER <PK,FK1,FK3>
CALC_ID NUMBER <FK2>
PARENT_OPR_TYPE NUMBER <FK1>
OPR_TYPE_NAME VARCHAR2(30)
CODE VARCHAR2(10)
)
CREATE TABLE OPERATION_INFLUENCE_PKG
(
PACKAGE_ID NUMBER <PK>
BEGIN_DATE DATE
END_DATE DATE
IS_LOCK NUMBER(1)
)
И та самая таблица куда и надо записать данные:
CREATE TABLE INFLUENCE_ARRAY
(
PACKAGE_ID NUMBER <PK,FK1>
ITEM_ID NUMBER <PK>
OPR_TYPE_ID NUMBER <FK2>
CLASS_ID NUMBER <FK2>
)
12 июл 07, 08:33    [4381423]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116252
Пока все еше непонятно.
Как связаны между собой существующие таблицы ?
PK - FK ?

Тогда делаете джойны по соответствующим полям,
на оригинальное поле новой таблицы сажаете последовательность,
заполняя его например в триггере или просто так и все
INSERT SELECT
12 июл 07, 08:54    [4381481]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
Create table operation_type_influence
(INFLUENCE_ID NUMBER,
INFLUENCE_TYPE NUMBER,
INFLUENCE_CLASS NUMBER,
DEPENDENT_TYPE NUMBER,
DEPENDENT_CLASS NUMBER,
PACKAGE_ID NUMBER 
);

Create table operation_type(
opr_type_id NUMBER,
class_id NUMBER,
CALC_ID NUMBER,
PARENT_OPR_TYPE NUMBER,
OPR_TYPE_NAME VARCHAR2(30),
CODE VARCHAR2(10)
);

CREATE TABLE OPERATION_INFLUENCE_PKG
(
PACKAGE_ID NUMBER,
BEGIN_DATE DATE,
END_DATE DATE,
IS_LOCK NUMBER(1)
);

-- Пропущенная
-- Допустим так

CREATE TABLE operation_class (
Class_id number,
Class_name varchar2(30)
);

--И та самая таблица куда и надо записать данные:
CREATE TABLE INFLUENCE_ARRAY
(
PACKAGE_ID NUMBER,
ITEM_ID NUMBER,
OPR_TYPE_ID NUMBER,
CLASS_ID NUMBER
);

insert into INFLUENCE_ARRAY (PACKAGE_ID, ITEM_ID, OPR_TYPE_ID, CLASS_ID)
select ti.PACKAGE_ID, rownum, t.opr_type_id, t.class_id
from operation_type_influence ti,
     operation_type t,
     OPERATION_INFLUENCE_PKG ip,
     operation_class c
where ti.PACKAGE_ID = ip.PACKAGE_ID
  and ip = 

/*
drop table operation_type_influence;
drop table operation_type;
drop TABLE OPERATION_INFLUENCE_PKG;
CREATE TABLE operation_class;
drop TABLE INFLUENCE_ARRAY;
*/

Не понятно как связаны все таблицы, особенно operation_type_influence и operation_type :)
12 июл 07, 09:01    [4381495]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
эти таблицы связаны следующим образом opr_type_id это внешние ключи influence_type и dependent_type, class_id это influence_class и dependent_class.
12 июл 07, 09:34    [4381658]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
плюс ко всему должна присутствовать сортировка, то есть нужно знать, что заполнять первым, а что вторым. То есть надо знать какую таблицу заполняем первой, второй и т.п.
12 июл 07, 09:36    [4381672]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Поэтому я и поставил тему как массив.
12 июл 07, 09:45    [4381718]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
insert into INFLUENCE_ARRAY (PACKAGE_ID, ITEM_ID, OPR_TYPE_ID, CLASS_ID)
select PACKAGE_ID, rownum, opr_type_id, class_id
from (
select ti.PACKAGE_ID, t.opr_type_id, t.class_id
from operation_type_influence ti,
     operation_type t,
     OPERATION_INFLUENCE_PKG ip,
     operation_class c
--здесь пишете что с чем связать
where ti.PACKAGE_ID = ip.PACKAGE_ID
  and ip. = 
--здесь пишете как отсортировать
order by 1,4,3
) 
Это если я праввильно понял про ITEM_ID (rownum)
Способ сортировки м.б. и пересмотреть надо.
12 июл 07, 09:56    [4381776]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
про ITEM_ID все верно, да и таблицу operation_class совершенно верно описали!!!
12 июл 07, 10:00    [4381802]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
под сортировкой понимается влияние таблиц друг на друга, то есть тот на кого никто не влияет первый в списке и т.д.
12 июл 07, 10:02    [4381821]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
new_igor
плюс ко всему должна присутствовать сортировка, то есть нужно знать, что заполнять первым, а что вторым. То есть надо знать какую таблицу заполняем первой, второй и т.п.
new_igor
под сортировкой понимается влияние таблиц друг на друга, то есть тот на кого никто не влияет первый в списке и т.д.

Судя по этим фразам, Вам нужно читать и читать документацию по SQL. Ну бред просто.
Возьмите мой запрос и попробуйте его дописать, если не получится или не то что надо, то пишите сюда.
12 июл 07, 10:10    [4381849]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
да нет не бред. Допустим есть объекты a,b,c. Проверяем есть ли на a ссылка с b или c. Если то проверяем b если на b нет, то ставим его на первое место. и так далее пока не упорядочим их все.
12 июл 07, 10:17    [4381903]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Нужна как я понимаю создать коллекцию. Там использовать только таблицу operation_type_influence. для коллекции взять только opr_type_id, class_id и is_first (для проверки того на первом ли месте). А потом уже все это вставлять в таблицу influence_array.
12 июл 07, 10:23    [4381949]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
new_igor
да нет не бред. Допустим есть объекты a,b,c. Проверяем есть ли на a ссылка с b или c. Если то проверяем b если на b нет, то ставим его на первое место. и так далее пока не упорядочим их все.
У Вас очень большие проблемы с формулировкой :) Может быть попробуете показать на примере? Вдруг получится. Плюс - конечная цель. Зачем Вам этот массив с этой непонятной сортировкой? (есть устойчивое ощущение, что он Вам не нужен)
12 июл 07, 10:25    [4381961]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Видимо, да (насчет формулировки). Таблица operation_class содержит всего четыре записи (начисления, удержания, налоги, льготы). Типами операции могут быть например надбавка за ребенка. То есть мы получаем такой массив значений Налог Начисление Надбавка. Вот нужно и получить их в таком порядке, чтобы было к примеру Начисление Надбавка Налог в соотвествии с влиянием. Нужно просто собрать данные с таблиц и отсортировать. Эх... С формулировками проблемы есть. Как собака понимаю, но сказать не могу.
12 июл 07, 10:34    [4382005]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
Вот уже лучше, а теперь Вам надо показать тестовые данные, и что Вы хотите получить, прям с цифрами.:)
12 июл 07, 10:37    [4382030]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
Aidyn
Member

Откуда:
Сообщений: 72
И

К сообщению приложен файл (Text File - 478bytes) cкачать
12 июл 07, 10:40    [4382049]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
и что "И"?
insert into INFLUENCE_ARRAY (PACKAGE_ID, ITEM_ID, OPR_TYPE_ID, CLASS_ID)
select ti.PACKAGE_ID, rownum, t.opr_type_id, t.class_id,t.opr_type_name,t.code,c.class_name
from operation_type_influence ti,
operation_type t,
OPERATION_INFLUENCE_PKG ip,
operation_class c
where ti.PACKAGE_ID = ip.PACKAGE_ID AND c.class_id = t.class_id AND ti.influence_type = t.opr_type_id AND ti.influence_class = t.class_id;
12 июл 07, 11:11    [4382270]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
блин. Извиняюсь я там выборку сделал чтобы посмотреть что он выберет с такими id и вам написал с вставкой в таблицу influence_array.
12 июл 07, 11:13    [4382289]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
new_igor
блин. Извиняюсь
Да ничего, все равно никто изначально ничего не понимает - Ваш пост просто ничего не изменил
12 июл 07, 11:18    [4382336]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
new_igor
Member

Откуда: НЕ Масквэ
Сообщений: 768
Как объяснить не понимаю. Хорошо, что я не препод. Должны получиться такие конструкции:
1.(начисления по окладу, льгота по ребенку)
2.(льгота по ребенку, льгота на доход)
Вот так!!! Грустно все.
12 июл 07, 11:21    [4382376]     Ответить | Цитировать Сообщить модератору
 Re: Массив  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
new_igor
Как объяснить не понимаю.
Пример. Пишите, что в каждой табличке(не словами, а полные данные) и что хотите на выходе - легко и просто, минимум слов :)
12 июл 07, 11:24    [4382398]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить