Условное количество записей CF - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь сохранить на сервере базы данных несколько запросов, запрашивая большое количество элементов сразу из нескольких категорий, а затем используя операторы <cfif ... >, чтобы отфильтровать эти результаты в уникальные таблицы, которые я показываю для каждой категории.Я ищу, чтобы найти количество записей для каждой из возвращаемых категорий, а не только количество записей общего запроса.

Основной код:

<cfinvoke component="..." method="..." returnvariable="session.queryList">
    ...
</cfinvoke>

<cfoutput #session.queryList#>
    <cfif #category# eq "A">
        [Table for A things]
    </cfif>
    <cfif #category# eq "B">
        [Table for B things]
    </cfif>
    <cfif #category# eq "C">
        [Table for C things]
    </cfif>
</cfoutput>

Я не хочуиспользовать здесь «ORDER BY category», потому что таблицы на самом деле находятся в разных div, которые мы скрываем и показываем, поэтому нам нужны отдельные таблицы.

Проблема, с которой я сталкиваюсь, заключается в том, что мне нужна таблица дляВещи », чтобы сказать« Нет результатов », если нет записей, возвращаемых, где категория =« А », но RecordCount, кажется, применяется ко всему запросу.Есть ли способ сказать что-то вроде <cfif #queryList.RecordCount# WHERE #category# eq "A" GT "0">?

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

QoQ может помочь.

<cfinvoke component="..." method="..." returnvariable="session.queryList">
 ...
</cfinvoke>
 <!---then run QoQ on it--->
<cfquery name="catA" dbtype="query">
 select * from session.queryList where category ="A"
</query>
<cfquery name="catB" dbtype="query">
 select * from session.queryList where category ="B"
</query>
<cfif catA.recordcount>
 <cfoutput query="catA">
  [Table for A things]
 </cfoutput>
 <cfelse>
  No Records for A things
</cfif>
<cfif catB.recordcount>
 <cfoutput query="catB">
  [Table for B things]
 </cfoutput>
 <cfelse>
  No Records for B things
</cfif>
0 голосов
/ 26 июня 2018

QofQ медленный. Вы можете сделать это с помощью одной поездки в mySQL:

SELECT someColumn, category, count(*) AS categoryCount 
FROM theTable
GROUP BY category
ORDER BY category, someColumn

Группировка даст вам счет по категориям, которые вы можете использовать в CFML.

<cfoutput query="session.queryList" group="category">
    <cfif categoryCount eq 0>
        No Records for #category#. =(
    </cfif>
    <cfoutput>
        #someColumn#<br>
    </cfoutput>
</cfoutput>
0 голосов
/ 25 июня 2018

Я полагаю, вы пытаетесь сделать следующее.<cfoutput> имеет функцию, которая позволяет группировать результаты запроса, если запрос упорядочен по элементу группировки.

<cfoutput query="#session.queryList#" group="category">
  <h3>Category #category#</h3>
  <table>
    <tr><th>...</th><th>...</th></tr>
    <cfoutput><!--- This cfoutput loops through the each record in the group. --->
      ---rows---
    </cfoutput>
  <table>
</cfoutput>
...