【发布时间】:2017-04-12 08:01:27
【问题描述】:
我对 PLSQL 的更高级主题有点陌生,所以希望有人可以帮助我。
问题: 我有一个表格,其中包含管理员和用户之间发送的消息。该表有一个带有 FK 的 message_parent 到同一个表 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标准版
标签: sql oracle oracle12c recursive-query connect-by