나는 PLSQL의 고급 주제에 익숙하지 않기 때문에 누군가 나를 도와 줄 수 있기를 바랍니다.Oracle에서 재귀 쿼리
문제 : 관리자와 사용자간에 메시지가 전송 된 테이블이 있습니다. 테이블에는 동일한 테이블 message_id 필드에 FK가있는 message_parent가 있습니다. 필드가 채워지면 메시지가 이전 메시지에 대한 응답으로 전송되었음을 의미합니다. 동일한 대화에 속한 모든 메시지를 선택하여 표시해야합니다. 단일 쿼리로이 작업을 수행 할 수 있습니까? 아니면 이러한 종류의 논리를 처리하는 절차가 필요합니까? 내가 알고있는 것처럼 내가 검색하고있는하여 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"이지만 "이탈 한"것은 아닙니다 (baz는 원래 메시지이므로). 예를 들어 있다면 간단합니다. 함께 묶을 수있는 두 개의 메시지 만 동일한 '스레드'에있는 모든 메시지를 연결하지만 parent_id가 끊임없이 이동하는 thread_id 열은 문제를 파악하는 데 어려움을 겪고 있습니다.
사용중인 Oracle 버전은 무엇입니까? –
12c 일반용 – taurijuhkam