Я отчасти новичок в более сложных вопросах PLSQL, поэтому, надеюсь, кто-то может мне помочь.Рекурсивный запрос в Oracle
Проблема: У меня есть таблица с сообщениями, отправленными между администратором и пользователями. В таблице есть message_parent с FK в одно и то же поле message_id таблицы: в случае заполнения поля это означает, что сообщение было отправлено как ответ на предыдущее сообщение. Мне нужно выбрать все сообщения, которые являются частью одной и той же беседы, и отображать их. Можно ли это сделать с помощью одного запроса или мне нужна процедура для обработки такой логики? Как я понимаю, она должна быть рекурсивными, так как message_id, с помощью которого я ищу, всегда меняется
Пример Сообщение таблица:
|message_id|parent_id|message_content|
|----------|---------|---------------|
|101 |100 | foo |
|100 |97 | bar |
|99 |(null) | Left out |
|97 |(null) | baz |
Таким образом, правильный запрос выбрав MESSAGE_CONTENT должен вернуться «baz», «bar» и «foo», но не «Left out» (поскольку baz - это исходное сообщение). Это было бы просто, если бы это было, например, только два сообщения, которые могут быть связаны друг с другом или, например, столбец thread_id, который свяжет все сообщения в одном и том же «потоке», но с постоянным перемещением parent_id, мне трудно понять это.
Какую версию Oracle вы используете? –
12c Стандартная версия – taurijuhkam