|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.04.2019, 11:46 | #1 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
Хитровыдуманный запрос для таблицы с иерархией
Использую СУБД postgresql.
Есть иерархическая таблица с каталогами данных (в примере корнями каталогов являются Корень1, Корень2 у них поле parent и root заполнено null) Рабочий пример https://www.db-fiddle.com/f/2hbRo3qUfhwACNHVBxy3A9/0 Код:
у таких папок поле is_node имеет значение false. Нужно написать запрос, который по значению full_code и дате, вернет запись актуальную на указанную дату. Если будет передан полный код корня каталога или полный код записи с папкой, то нужно вернуть актуальную папку с датой. Например: 1) если full_code = 'Корень1.111' Дата = '2017-02-02', то должно вернуться (8, 'Корень1.111', '111', 2, 2, null) 2) если full_code = 'Корень1.111' Дата = '2019-02-02', то должно вернуться из корня запись (5, 'Корень1.111', '111', 1, 1, null) 3) если full_code = 'Корень1.111' Дата = '2012-02-02', то должно ничего не вернут, так как есть папка с датой 2015-12-31 в ней нет записи с кодом 'Корень1.111' 4) если full_code = 'Корень1' Дата = '2017-02-02', то должно вернуться (2, 'Корень1.2017-12-31', '2017-12-31', 1, 1, false) 5) если full_code = 'Корень1' Дата = '2019-02-02', то должно вернуться (1, 'Корень1','Корень1', null, null, true) 6) если full_code = 'Корень1.2017-12-31' Дата = '2019-02-02', то должно вернуться (1, 'Корень1','Корень1', null, null, true) Написал запрос, логика такая узнаем значение id корня каталога, затем строим список из корня и папок с датами, сравниваем с переданной датой, берем актуальную запись с датой, проверяем есть ли там искомый полный код. Но запрос получился слишком сложный: Код:
1) Как упростить запрос? 2) Главный вопрос, как написать запрос, если передан массив полных кодов, и нужно получить массив актуальных записей. Даже нет идей, как решить этот вопрос??? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите написать хитровыдуманный запрос | polin11 | SQL, базы данных | 1 | 22.11.2018 06:04 |
Запрос 2 таблицы | a.n.o.n.i.m | SQL, базы данных | 8 | 11.02.2018 14:54 |
Запрос таблицы | Марат05 | C++ Builder | 7 | 11.02.2013 18:06 |
1 запрос 2 таблицы | Abuhamed | PHP | 8 | 04.10.2012 12:52 |
Проблемы с иерархией классов | NecroSlider | Помощь студентам | 2 | 15.04.2007 21:57 |