2016-09-13 7 views
0

J'ai un CFQuery pour extraire des données d'une table que je voudrais afficher à l'écran dans un format qui regroupe les données selon l'une des colonnes, 'Nom de l'entreprise'. Je n'arrive pas à comprendre la logique pour cela.Problème de regroupement des résultats CFQuery

Actuellement, je parcours simplement les données pour les afficher à l'écran et les séparer par une étiquette de règle horizontale. Ce n'est pas la meilleure façon de le faire et cela génère une très longue liste de résultats que l'utilisateur doit parcourir. J'espère qu'en regroupant les données, ce sera plus lisible.

Voici mon code:

<!--- Feedback Query ---> 
    <cfquery name="getFeedback" datasource="#datasource#"> 
    select ticket_id, service_satisfaction, customer_notes, response_date, company_name 
    from service_verification 
    order by company_name 
    </cfquery> 

     <br /> 
     <cfoutput query="getFeedback" group="company_name"><strong>Company Name: #getFeedback.company_name#</strong><br /> 

      <cfquery dbtype="query" name="parsed"> 
      select company_name 
      from getFeedback 
      where company_name = '#getFeedback.company_name#' 
      </cfquery> 
      (#parsed.recordcount# Responses)<br /> 

      <cfoutput> 


      Ticket Number: <cfif #getFeedback.ticket_id# eq 0>No ticket associated with this feedback. This was solicited feedback.<cfelse>#getFeedback.ticket_id#</cfif><br /> 
      Date: #DateFormat(getFeedback.response_date, 'mm/dd/yyyy')# at #TimeFormat(getFeedback.response_date, 'hh:mm:ss')#<br /><br /> 
      Rating: <cfif #getFeedback.service_satisfaction# eq 'thumbs-up'><img src="images/thumbs-up-small.png" /><cfelse><img src="images/thumbs-down-small.png" /></cfif><br /> 
      Customer Notes: <cfif #getFeedback.customer_notes# eq ''>No additional comments provided.<cfelse>#getFeedback.customer_notes#</cfif><br /><br /> 
      <hr style="border-top: 1px dashed ##8c8c8c;" /> 
      </cfoutput> 

     <br /> 
    </cfoutput> 

Voici un échantillon de mon cfdump de la requête ci-dessus:

company_name  service_satisfaction response_date    ticket_id customer_notes 
1 AmerTech  thumbs-up    {ts '2014-10-22 10:25:14'} 22667  Jeff was great. thanks 
2 AmerTech  thumbs-up    {ts '2015-01-20 12:02:34'} 23795  Rich was good. Thanks. He needs to send out a another drive that we would like as backup to take home at night. Also, he missed one machine for backups that I need to discuss. Have someone please call . Thanks 
3 AmerTech, Inc thumbs-up    {ts '2015-04-16 13:56:44'} 25066 
4 AmerTech, Inc thumbs-down    {ts '2015-10-22 11:23:40'} 27293  Brian, I understand from Dave that you could not solve the problem and that he had to call the OEM to solve the problem. This is what I was informed. I do not know any of the details surrounding the issue. but it shouldn't take that long to install a printer on a new laptop. Why did this occur and how do I make sure it doesn't happen again. thanks mark 
5 AMIB   thumbs-down    {ts '2014-10-02 12:18:27'} 22463  Representative did not call me upon arrival at group home as instructed and implemented changes without approval from HR 
6 AMIB   thumbs-up    {ts '2015-06-08 09:58:03'} 25599 
7 AMIB   thumbs-up    {ts '2016-03-10 14:10:01'} 28777 
8 AMIB   thumbs-up    {ts '2016-03-28 09:10:37'} 29193  Michael is a great tech! Extremely helpful and responsive to our needs! 
9 AMIB   thumbs-up    {ts '2016-03-28 10:19:19'} 28777 

Mise à jour:

Lorsque j'ajoute l'attribut de groupe la balise cfoutput, elle affiche uniquement le premier résultat du groupe

<cfloop query="getFeedback"> 

    <cfoutput><cfoutput query="getFeedback" group="company_name"> 

     Company Name: #getFeedback.company_name# &nbsp; <cfif #getFeedback.service_satisfaction# eq 'thumbs-up'><img src="images/thumbs-up-small.png" /><cfelse><img src="images/thumbs-down-small.png" /></cfif><br /> 
     Ticket Number: <cfif #getFeedback.ticket_id# eq 0>No ticket associated with this feedback. This was solicited feedback.<cfelse>#getFeedback.ticket_id#</cfif><br /> 
     Date: #DateFormat(getFeedback.response_date, 'mm/dd/yyyy')# at #TimeFormat(getFeedback.response_date, 'hh:mm:ss')#<br /><br /> 

     Customer Notes: #getFeedback.customer_notes# &nbsp; <br /><br /> 

     <br /> 

    <hr></cfoutput> 
    </cfloop> 
+2

Vous triez les résultats par société, ce qui est bon, mais le code de sortie ne contient pas l'attribut "groupe". [Voir le plan ici] (http://stackoverflow.com/questions/24147088/how-to-output-table-results-by-using-cfoutput-group-by-date/24147305#24147305). – Leigh

+0

Lorsque j'ajoute l'attribut de groupe à la balise cfoutput, il affiche uniquement le premier résultat du groupe. J'ai mis à jour mon message original avec le nouveau code. –

+1

Jetez un autre coup d'oeil à l'exemple dans le lien. Vous l'utilisez incorrectement. Le groupe passe sur la balise * outout * cfoutput. En outre, vous ne savez pas pourquoi vous mélangez cfloop et cfoutput. Utilisez simplement les balises cfoutput imbriquées. – Leigh

Répondre

1

Débarrassez-vous de l'étiquette de boucle. Ensuite, utilisez ceci:

<cfoutput query="getFeedback" group="company_name"> 
    <!--- OUTPUT EACH GROUP ---> 
    Company Name: #getFeedback.company_name# &nbsp; <cfif #getFeedback.service_satisfaction# eq 'thumbs-up'><img src="images/thumbs-up-small.png" /><cfelse><img src="images/thumbs-down-small.png" /></cfif><br /> 
    <cfoutput> 
     <!--- OUTPUT EACH RECORD ---> 
     Ticket Number: <cfif #getFeedback.ticket_id# eq 0>No ticket associated with this feedback. This was solicited feedback.<cfelse>#getFeedback.ticket_id#</cfif><br /> 
     Date: #DateFormat(getFeedback.response_date, 'mm/dd/yyyy')# at #TimeFormat(getFeedback.response_date, 'hh:mm:ss')#<br /><br />  
     Customer Notes: #getFeedback.customer_notes# &nbsp; <br /><br />   
     <br /> 
    </cfoutput> 
    <hr> 
</cfoutput> 

C'est la deuxième étiquette CFOUTPUT imbriquée qui traverse chaque enregistrement. Notez que HR est dans le groupe, pas chaque enregistrement.

Si vous voulez vous faire plaisir, vous pouvez en faire un accordéon avec jQuery. Chaque groupe est la tête, et chaque enregistrement est le contenu.

0

Voici ma dernière version du code de travail. Merci @Leigh

<!--- Feedback Query ---> 
<cfquery name="getFeedback" datasource="#datasource#"> 
    select ticket_id, service_satisfaction, customer_notes, response_date, company_name 
    from service_verification 
    order by company_name 
</cfquery> 

<br /> 
<cfoutput query="getFeedback" group="company_name"> 
    <strong>Company Name: #getFeedback.company_name#</strong><br /> 

    <cfquery dbtype="query" name="parsed"> 
     select company_name 
     from getFeedback 
     where company_name = '#getFeedback.company_name#' 
    </cfquery> 
    (#parsed.recordcount# Responses)<br /> 

    <cfoutput> 
     Ticket Number: <cfif getFeedback.ticket_id eq 0>No ticket associated with this feedback. This was solicited feedback.<cfelse>#getFeedback.ticket_id#</cfif><br /> 
     Date: #DateFormat(getFeedback.response_date, 'mm/dd/yyyy')# at #TimeFormat(getFeedback.response_date, 'hh:mm:ss')#<br /><br /> 
     Rating: <cfif getFeedback.service_satisfaction eq 'thumbs-up'><img src="images/thumbs-up-small.png" /><cfelse><img src="images/thumbs-down-small.png" /></cfif><br /> 
     Customer Notes: <cfif getFeedback.customer_notes eq ''>No additional comments provided.<cfelse>#getFeedback.customer_notes#</cfif><br /><br /> 
     <hr style="border-top: 1px dashed ##8c8c8c;" /> 
    </cfoutput> 

    <br /> 
</cfoutput>