5

我有 2 张桌子。一个用于类别,第二个用于问题。

 category table: 

 category_id
 category_name

 questions table:

 question_name
 question_id
 category_id

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

结果应该看起来像这样。

类别1

  • 问题 1
  • 问题2

类别2

  • 问题 4
  • 问题 5
4

1 回答 1

11

如果您使用 循环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>


烦人的是,这个分组功能还没有添加到 maincfloop中,你需要通过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 注入。同样,JsStringFormat(question_name)避免JS注入等。

同样,CF10/R4 也改进了这种情况,使用更一致的命名encodeForX方法(即encodeForHtml,encodeForJavaScript等)

于 2010-06-03T23:58:41.527 回答