私はPLSQLのより高度なトピックに新しいので、うまくいけば誰かが私を助けることができます。Oracleでの再帰的クエリ
問題: 管理者とユーザーの間でメッセージが送信されるテーブルがあります。テーブルには、同じテーブルのmessage_idフィールドにFKを持つmessage_parentがあります。フィールドにデータが入力されている場合は、メッセージが前のメッセージへの返信として送信されたことを意味します。同じ会話の一部であるすべてのメッセージを選択して表示する必要があります。単一のクエリでこれを行うことはできますか、またはそのような種類のロジックを処理するためのプロシージャが必要ですか?
|message_id|parent_id|message_content|
|----------|---------|---------------|
|101 |100 | foo |
|100 |97 | bar |
|99 |(null) | Left out |
|97 |(null) | baz |
のでMESSAGE_CONTENTを選択し、正しいクエリが返す必要があります:私は理解したよう私が探していたことでMESSAGE_IDは、常に
例 メッセージテーブルを変更しているので、それは、再帰的にする必要があります"baz"、 "bar"、 "foo"ではなく "Left out"(bazは元のメッセージなので)。 これは、例えば、一緒に結びつけることができるメッセージは2つだけです。同じ「スレッド」内のすべてのメッセージをリンクするが、parent_idが常にシフトしているthread_id列は、わかりにくいです。オラクルで
使用しているOracleのバージョンは? –
12c標準エディション – taurijuhkam