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# <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# <br /><br />
<br />
<hr></cfoutput>
</cfloop>
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
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. –
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