作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个简单的线程/讨论机制,但是我很难创建一个查询来检索我的帖子,就像帖子的树/层次结构一样。
我有一个具有以下属性(简化)的 POSTS 表:id、text、username、type、replytoid
类型:“线程开始”或“回复”
回复:该评论正在回复另一条评论,所以我在这里存储了“父”ID。 'THREAD START' 有一个 NULL 回复。
我的测试数据是:( fiddle )
| ID | TEXT | USERNAME | TYPE | REPLYTOID |
|----|------------------|----------|----------------------|-----------|
| 1 | My name is Alice | Alice | THREAD START | (null) |
| 2 | Reply to @Alice | Bob | REPLY | 1 |
| 3 | Reply to @Bob | Carol | REPLY | 2 |
| 4 | Reply to @Carol | Dave | REPLY | 3 |
| 5 | Reply to @Alice | Eve | REPLY | 1 |
| 6 | My name is Frank | Frank | THREAD START | (null) |
| 7 | Reply to @Frank | Gina | REPLY | 6 |
| ID | TEXT | USERNAME | TYPE | REPLYTOID | LEVEL | THREADID |
|----|------------------|----------|-----------------|-----------|-------|----------|
| 1 | My name is Alice | Alice | THREAD START | (null) | 1 | 1 |
| 2 | Reply to @Alice | Bob | REPLY | 1 | 2 | 1 |
| 5 | Reply to @Alice | Eve | REPLY | 1 | 2 | 1 |
| 3 | Reply to @Bob | Carol | REPLY | 2 | 3 | 1 |
| 4 | Reply to @Carol | Dave | REPLY | 3 | 4 | 1 |
| 6 | My name is Frank | Frank | THREAD START | (null) | 1 | 6 |
| 7 | Reply to @Frank | Gina | REPLY | 6 | 2 | 6 |
最佳答案
这是您可以使用递归 CTE 的问题的一个很好的例子。从根帖子作为 anchor 开始,并建立将它们链接到 parent 的回复。您可以通过保留父 id 来增加前一个级别和线程来获取级别。
with cte as
(
select *, 1 as level, id as thread
from posts
where replytoid is null
union all
select posts.*, cte.level + 1 as level, cte.thread
from posts
inner join cte on cte.id = posts.replytoid
)
select * from cte
order by thread, level
关于sql - 使用查询显示帖子的层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25882466/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!