gpt4 book ai didi

mysql绑定(bind)父子关系查询

转载 作者:行者123 更新时间:2023-11-29 19:26:37 25 4
gpt4 key购买 nike

如果级别只有 1 级深,我有以下查询,该查询效果很好,但如果有更多级别,则查询会造成麻烦,因为它不显示嵌套级别

SELECT
question.question,
answer.answer,
answer.questionid,
answer.pid,
question.DateAdded,
answer.DateAdded
FROM
answer
RIGHT JOIN question ON answer.questionid = question.id

请指导我如何处理

我的表结构是这样的:

问题表:

id
question
DateAdded

答案表:

pid
answer
questionid
DateAdded

按嵌套级别意味着条目将使用答案表的 pid 插入到答案表中,并插入到 questionid 字段

最佳答案

假设您有以下带有伪代码服务器语言的 html 标记。

Question:<br/>
{{question.question}}<br/>

Answers:<br/>
<ul>
{{foreach answer in getRootAnswers(question.id)}}
<li>{{printAnswer(answer)}}</li>
{{/foreach}}
</ul>

getRootAnswers(questionId) 函数将返回一个顶级答案,其中 pid 为 null。它应该生成一个类似的查询

SELECT
answer,
id,
DateAdded
FROM answer
WHERE questionid = @questionId AND pid is null
ORDER BY DateAdded

printAnswer 将生成标记

Added on: {{answer.DateAdded}}<br/>
{{answer.answer}}<br/>
<ul>
{{foreach childAnswer in getChildAnswers(answer.id)}}
<li>{{printAnswer(childAnswer)}}</li>
{{/foreach}}
<ul>

标记将首先打印answer信息。然后它将打印 answer 的子答案。注意 printAnswer 递归调用。

getChildAnswers(parentId) 函数将返回由 parentId 标识的答案的子答案。它应该生成一个类似的查询

SELECT
answer,
id,
DateAdded
FROM answer
WHERE pid = @parentId
ORDER BY DateAdded

您最终会对答案树中的每个节点进行一次查询。

关于mysql绑定(bind)父子关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42080322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com