Я задал вопрос здесь вчера ( cfquery grouping, count & maxrows ), с которым это связано.На этот вопрос успешно ответили бы настолько, насколько успешно работает счетный аспект.Тем не менее, я получаю странные результаты с другим аспектом, который я вполне могу понять.
Сценарий таков - я возвращаю категории и подкатегории верхнего уровня в одном запросе, подкатегории возвращаются вложениемcfoutput.Результат работает, за одним исключением - подкатегории всегда возвращают полный список - т.е. если я ограничиваю исходный вывод, чтобы на экране отображались только 2 строки, я всегда получаю первые 2 строки из первой категории верхнего уровня - сейчаспервые 2 строки из текущей категории верхнего уровня.
Я попытался очистить массив в запросе cfoutput, в cfloop и т. д. - все безуспешно.
Я вставилмой код ниже, и приложил скриншот тока, который он генерирует.Любые указатели на это, прежде чем я потеряю все свои волосы, будут с благодарностью приняты!
<cfquery name="getcategories">
SELECT p.ID AS CategoryID, p.Cat_Name as CategoryName, p.Cat_Shortname, c.ID AS SubCategoryID, c.Cat_Name as SubCategoryName, c.Cat_Shortname AS SubCatShortname
FROM product_categories p LEFT JOIN product_categories c ON p.ID = c.SubcategoryOf
WHERE p.SubcategoryOf = 0
</cfquery>
<cfset subcategoryNames = ArrayNew(1)>
<cfoutput query="getcategories" group="CategoryName">
<li class="catli">CategoryName : #CategoryName#</li>
<cfoutput>
<cfset arrayAppend(subcategoryNames, SubcategoryName)>
<p>ArrayAppend : #SubcategoryName#<br /></p>
</cfoutput>
<cfloop from="1" to="2" index="i">
<li class="subli">SubcategoryName : #SubcategoryName[i]#</li>
</cfloop>
<cfif arrayLen(subcategoryNames) GT 2>
<p>ArrayLen is GT 2</p>
<li class="subli moreli">
+ #arrayLen(subcategoryNames) - 2# More Subcategories
</li>
<!--- Extra Subcategories --->
<p>Extra Subcategories</p>
<cfloop from="3" to="#arrayLen(subcategoryNames)#" index="r">
<li class="subli">SubcategoryName : #SubcategoryName[r]#</li>
</cfloop>
<!--- End Extra Subcategories --->
</cfif>
</cfoutput>