gpt4 book ai didi

coldfusion - 查询的查询或带有分组的循环

转载 作者:行者123 更新时间:2023-12-02 21:36:11 25 4
gpt4 key购买 nike

我有一个表,其中保存用户之间发送的消息的信息。它看起来像这样:

MessageID | MessageIDReference | MessageSubject   | Body     | Date
1 NULL Test Hello 10/01/2014
2 1 RE: Test Goodbye 11/01/2014
3 1 RE: Test Hello 11/01/2014
.......
50 45 RE: Subject Blah 12/12/2014

因此创建的第一条消息将具有 NULL MessageIDReference 中的值列(因为它是一条新消息而不是回复)。当用户回复消息时,它会插入 MessageID将原始消息写入 MessageIDReference列,以便我们知道它回复的是哪条消息。又好又简单!

在我的网页上,我想显示对话中的第一条消息,然后在一个区域内显示对该消息的任何后续回复,以便轻松查看对话流程,如下所示:

<ol>
<cfloop query="messages">
<li>
#MessageSubject# #Body#
<ol>
<!--- I want replies to this message here somehow --->
<li>1st reply</li>
<li>2nd reply</li>
etc etc
</ol>
</li>
</cfloop>
<ol>

我认为这可以通过在每个 <cfloop> 中进行某种分组来完成标签,但我不知道如何。我现在认为必须在内部循环中使用查询的查询来完成,以便它返回每个 MessageID 的所有回复。并输出这些。

当我执行以下操作时,查询的查询会起作用:

<cfquery name="Messages">
SELECT * FROM Messages
</cfquery>

<ol>
<cfquery type="query" name="MessagesNew">
SELECT *
FROM Messages
WHERE MessageIDReference IS NULL
</cfquery>
<cfloop query="MessagesNew">
<li> #MessagesNew.MessageSubject# #MessagesNew.Body#
<cfquery type="query" name="MessagesReplies">
SELECT *
FROM Messages
WHERE MessageIDReference = #MessagesNew.MessageID#
</cfquery>
<ol>
<cfloop query="MessagesReplies">
<li>#MessagesReplies.MessageSubject# #MessagesReplies.Body#</li>
</cfloop>
</ol>
</li>
</cfloop>
</ol>

最佳答案

Dan 提出了一个很好的建议,但这里有一个查询,可以获取原始消息以及任何回复 - 排序后第一行是原始消息,其余的都是按时间顺序排列的回复。

<cfquery type="query" name="MessagesReplies">
SELECT *
FROM Messages
WHERE MessageIDReference = <cfqueryparam cf_sql_type="cf_sql_integer" value="#MessagesNew.MessageID#" />
OR MessageID = <cfqueryparam cf_sql_type="cf_sql_integer" value="#MessagesNew.MessageID#" />
ORDER BY MessageId, date
</cfquery>

当 MessageIDReference 为 NULL 时运行的查询将返回每个线程中的第一条消息,因此您需要根据 ID 选择该消息。

请注意 cfqueryparam 的使用,您应该始终参数化您的查询。永远。

关于coldfusion - 查询的查询或带有分组的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21331649/

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