sql - 使用嵌套 cfloop 查询

标签 sql sql-server coldfusion cfml cfloop

我有两张 table 。第一个用于类别,第二个用于问题。

 category table: 

 category_id
 category_name

 questions table:

 question_name
 question_id
 category_id

如何循环遍历所有类别名称并显示按每个类别名称分组的问题?使用 ColdFusion,所以我假设我应该使用 <CFLOOP>

结果应该如下所示。

类别1

  • 问题 1
  • 问题 2

类别2

  • 问题 4
  • 问题 5

最佳答案

如果使用 cfoutput 进行循环,则可以按特定列进行分组,然后对该列中的项目进行内部循环。

像这样:

<cfquery name="Questions">
    SELECT q.question_name , c.category_name

    FROM questions q
    JOIN category c
        ON c.category_id = q.category_id

    ORDER BY c.category_name , q.question_name
</cfquery>

<cfoutput query="Questions" groupby="category_name">
    **#category_name#**
    <cfoutput>
        #question_name#
    </cfoutput>
</cfoutput>


令人烦恼的是,这个分组功能尚未添加到主cfloop中,您需要通过cfoutput使用它。 :(

更新:在 ColdFusion 10 和 Railo 4 中,您现在可以使用 cfloop 而不是 cfoutput 来执行此操作。但请注意,该属性是 group 而不是 groupby:

<cfloop query="Questions" group="category_name">
    **#category_name#**
    <cfloop>
        #question_name#
    </cfloop>
</cfloop>


重要提示:如果这是 HTML 输出,请使用 HtmlEditFormat(question_name) 以避免潜在的 HTML 注入(inject)。同样,JsStringFormat(question_name)以避免JS注入(inject)等

同样,CF10/R4 也改进了这种情况,具有更一致的命名 encodeForX 方法(即 encodeForHtmlencodeForJavaScript 等)

关于sql - 使用嵌套 cfloop 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970580/

相关文章:

java - 如何在初始化时在类的构造函数调用中容纳一个 FileInputStream 对象为 InputStream 对象?

tomcat - ColdFusion 11 - 来自非 ASCII Cookie 字符的 500 内部服务器错误

ColdFusion:我需要为深层结构的每个元素使用 structKeyExists 吗?

Mysql:如何在缺少 id 时增量获取更新行?

mysql - 按非结构化表中的一个值过滤但按另一个值排序

mysql - 如何将所有 InnoDB 表转换为 MyISAM?

mysql - SQL - 创建表时出现 "Default"- 是否有必要?

sql-server - SQL Server R2 企业版下载?

sql-server - ADOQuery 正在绕过而不是删除触发器

sql - 如何检查谁持有我想授予的锁?