169 похожих чатов

Парни, привет. Я все еще новичок в Оракле. У меня

есть один запрос который нужно написать и я уже пару дней пытаюсь придумать. Как бы это сделать. И что-то в голову ничего не лезет кроме процедуры которая бы это все делала, но не совсем понятно как она могла бы возвращать значение. Конечно можно попробовать вернуть курсор, но непонятно как собрать курсор из разных запросов. Короче. Есть значит иерархия из трех уровней. К конечной записи иерархии привязаны номенклатуры. Нужно посчитать количество номенклатуры по разной вложенности иерархии. То есть по первому уровню количество номенклатуры и иерархии, по второму, по третьему. И вот по каждому уровню должно быть подсчитано отдельно. Потом это все нужно вывести в интерфейс программы иерархическим списком. То есть сначала самый высокий уровень - количество, раскрывается плюсиком список нижних уровней, напротив каждого количество и так далее, все три уровня вложенности. Вопрос в том, как такое можно выводить и считать в одном запросе?

9 ответов

34 просмотра

Сразу писать его на постгре.

Михаил Власов
Сразу писать его на постгре.

Зачем? Оракл же теперь бесплатный)))

Гуглить "иерархическая сумма", вариантов полно, даже я пару вариантов писал

vern-17 Автор вопроса

В общем парни. Перечитав я тут много разного на эту тему. Не смог найти вариант который мне нужен. Данная задача явно выходит за пределы моего профессионального уровня. И делать я абы как ее почему-то не хочу. Поэтому попытаюсь объяснить максимально подробно. Есть база данных в которой существуют записи пономенклатурно, по датам с количеством остатков. То есть если взять select * from stock where date = '01.01.2022' он покажет 92к записей с количеством остатков по каждой номенклатуре. Рядом с ней есть таблица с иерархией, типа id и pid трех, четырех уровней вложенности. То есть у нее есть поля: foreign key с id номенклатуры, id и pid, если уровень самый верхний, то pid = 0. То есть в итоге мы имеем структуру ТОВАРЫ ДЛЯ НОВОГО ГОДА->ЕЛКИ->ЗЕЛЕНЫЕ ЕЛКИ СО ЗВЕЗДОЧКОЙ и в другой таблице количество остатков на нужную дату.В целом составить структуру иерархии по лвл с помощью коннект бай не вызвало труда, но не совсем понятно как сделать подзапрос чтобы он считал количество товара для каждой строчки. К примеру Това

vern-17 Автор вопроса
vern 17
screenshot В общем парни. Перечитав я тут много разного на эт...

Почему то оборвалось сообщение. Так вот. К примеру как показано на рисунке.

vern 17
screenshot В общем парни. Перечитав я тут много разного на эт...

Я же говорил: гуглить "иерархическая сумма"

vern 17
бамп

Я вообще не понял что нужно

vern-17 Автор вопроса
Уруруборос Иванович
Я вообще не понял что нужно

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

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта