带分组和 mySql 排序的输出
Output with Grouping and mySql Order By
出于演示目的,假设我有以下查询:
SELECT a_label, aID, b_label, bID, c_label, cID, d_label, dID, orderByA, orderByB, orderByC
FROM table
ORDER BY orderByA, orderByB, orderByC
在显示端,可以对LI进行排序,将它们对应的位置存储在对应的tablecolumn中。
在我的输出中,我正在遍历数据并需要使用 <cfoutput query="qryName" group="aID">
然后一个子组使用 <cfoutput group="bID">
另一个子组使用 <cfoutput group="cID">
等等.
我的问题是我无法弄清楚查询应该是什么样子的组合,这样我的输出才能正确分组。我需要在我的 sql 查询中分组还是将其留在 cfm 代码中?那么订单呢?
我想我想问的是您如何知道分组何时属于查询与代码?
更新了一些 CFM 代码
<cfoutput query="#aw#" group="cID">
<ul class="listItem pItem">
<cfoutput group="pID">
<li class="listItem pTitle" data-cid="#aw.cID#" data-pid="#aw.pID#" data-wid="#aw.wID#">
<i class="glyphicon glyphicon-chevron-right rotate wToggle"></i> <input type="checkbox" name="p" class=""> #aw.pLabel#
<ul class="listItem wItem hide">
<cfoutput group="wID">
<li class="listItem wTitle" id="w_#aw.cID#_#aw.pID#_#aw.wid#_#aw.woaid#">
<i class="glyphicon glyphicon-chevron-right rotate dToggle font-blue-madison"></i> <input type="checkbox" name="w" class=""> #aw.wLabel#
<ul class="listItem dItem hide">
<cfoutput>
<li class="listItem dTitle" id="d_#aw.cID#_#aw.pID#_#aw.wID#_#aw.dID#_#aw.woaid#">
<input type="checkbox" name="d" class="child"> #aw.dID#
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>
</cfoutput>
用户可以将项目从一个部分拖到另一个部分,但前提是这些部分处于同一级别。例如,dItem
只能移动到另一个具有 dItem
的容器。同样,一个 wItem
只能移动到另一个 wItem
等等。
我正在处理 sql 查询并将更新此问题。我一次从一个级别开始,而不是同时开始整个查询(使这个一口大小)。
更新
我想我发现了问题,坏数据。有些项目在它们各自的 orderBy*
中没有值,因此分组的项目在子组中的顺序不正确。新添加项目的默认值是 NULL
但我认为这需要一个不同的值。是否有用于 sortby
列的最佳实践默认值?
更新二
我发现了这个 SO 问题,Insert and set value with max()+1 problems,我可以在添加新项目时实施它。这样它就会出现在列表的末尾。
知道了!我的 <cfoutput...group=...
需要按与 GROUP BY
子句中相同的列(和顺序)match/group。一旦我使它们匹配,我的输出就与我在数据库中看到的相匹配。
已更新SQL
SELECT a_label, aID, b_label, bID, c_label, cID, d_label, dID, orderByA, orderByB, orderByC
FROM table
ORDER BY cID, orderByA, orderByB, orderByC
orderByC 只是为了很好的衡量,最后一个 <cfoutput>
标签不需要分组。
更新了 CFM(删除了非必要代码以突出显示解决方案
<cfoutput query="#aw#" group="cID">
<ul class="listItem pItem">
<cfoutput group="orderByA">
<li class="listItem pTitle">
<i class="glyphicon glyphicon-chevron-right"></i> #aw.pLabel#
<ul class="listItem wItem hide">
<cfoutput group="orderByB">
<li class="listItem wTitle">
<i class="glyphicon glyphicon-chevron-right"></i>#aw.wLabel#
<ul class="listItem dItem hide">
<cfoutput>
<li class="listItem dTitle">
#aw.dID#
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>
出于演示目的,假设我有以下查询:
SELECT a_label, aID, b_label, bID, c_label, cID, d_label, dID, orderByA, orderByB, orderByC
FROM table
ORDER BY orderByA, orderByB, orderByC
在显示端,可以对LI进行排序,将它们对应的位置存储在对应的tablecolumn中。
在我的输出中,我正在遍历数据并需要使用 <cfoutput query="qryName" group="aID">
然后一个子组使用 <cfoutput group="bID">
另一个子组使用 <cfoutput group="cID">
等等.
我的问题是我无法弄清楚查询应该是什么样子的组合,这样我的输出才能正确分组。我需要在我的 sql 查询中分组还是将其留在 cfm 代码中?那么订单呢?
我想我想问的是您如何知道分组何时属于查询与代码?
更新了一些 CFM 代码
<cfoutput query="#aw#" group="cID">
<ul class="listItem pItem">
<cfoutput group="pID">
<li class="listItem pTitle" data-cid="#aw.cID#" data-pid="#aw.pID#" data-wid="#aw.wID#">
<i class="glyphicon glyphicon-chevron-right rotate wToggle"></i> <input type="checkbox" name="p" class=""> #aw.pLabel#
<ul class="listItem wItem hide">
<cfoutput group="wID">
<li class="listItem wTitle" id="w_#aw.cID#_#aw.pID#_#aw.wid#_#aw.woaid#">
<i class="glyphicon glyphicon-chevron-right rotate dToggle font-blue-madison"></i> <input type="checkbox" name="w" class=""> #aw.wLabel#
<ul class="listItem dItem hide">
<cfoutput>
<li class="listItem dTitle" id="d_#aw.cID#_#aw.pID#_#aw.wID#_#aw.dID#_#aw.woaid#">
<input type="checkbox" name="d" class="child"> #aw.dID#
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>
</cfoutput>
用户可以将项目从一个部分拖到另一个部分,但前提是这些部分处于同一级别。例如,dItem
只能移动到另一个具有 dItem
的容器。同样,一个 wItem
只能移动到另一个 wItem
等等。
我正在处理 sql 查询并将更新此问题。我一次从一个级别开始,而不是同时开始整个查询(使这个一口大小)。
更新
我想我发现了问题,坏数据。有些项目在它们各自的 orderBy*
中没有值,因此分组的项目在子组中的顺序不正确。新添加项目的默认值是 NULL
但我认为这需要一个不同的值。是否有用于 sortby
列的最佳实践默认值?
更新二 我发现了这个 SO 问题,Insert and set value with max()+1 problems,我可以在添加新项目时实施它。这样它就会出现在列表的末尾。
知道了!我的 <cfoutput...group=...
需要按与 GROUP BY
子句中相同的列(和顺序)match/group。一旦我使它们匹配,我的输出就与我在数据库中看到的相匹配。
已更新SQL
SELECT a_label, aID, b_label, bID, c_label, cID, d_label, dID, orderByA, orderByB, orderByC
FROM table
ORDER BY cID, orderByA, orderByB, orderByC
orderByC 只是为了很好的衡量,最后一个 <cfoutput>
标签不需要分组。
更新了 CFM(删除了非必要代码以突出显示解决方案
<cfoutput query="#aw#" group="cID">
<ul class="listItem pItem">
<cfoutput group="orderByA">
<li class="listItem pTitle">
<i class="glyphicon glyphicon-chevron-right"></i> #aw.pLabel#
<ul class="listItem wItem hide">
<cfoutput group="orderByB">
<li class="listItem wTitle">
<i class="glyphicon glyphicon-chevron-right"></i>#aw.wLabel#
<ul class="listItem dItem hide">
<cfoutput>
<li class="listItem dTitle">
#aw.dID#
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>
</li>
</cfoutput>
</ul>