Names in alphabetical order then location in alphabetical order "Order" does not work

I am embarrassed. I thought I was putting the names of the associated persons in ascending order and then getting my locations in ascending order of the subcategories. But even my associated names don't stay alphabetical.

<cfset date1 = CREATEODBCDATETIME(form.StartDate & '00:00:00')>
<cfset date2 = CREATEODBCDATETIME(form.EndDate & '23:59:59')>

<cfquery datasource="#application.dsn#" name="GetEmployeeInfo">
    SELECT  trans_location, date, associate
    FROM    cl_checklists
    WHERE   date >=  <cfqueryparam value="#date1#" cfsqltype="cf_sql_timestamp" />
            AND date <= <cfqueryparam value="#date2#" cfsqltype="cf_sql_timestamp" />
            AND trans_location IN ( <cfqueryparam value="#FORM.location#" cfsqltype="cf_sql_varchar" list="true" />  )
            AND associate IN ( <cfqueryparam value="#FORM.EmployeeName#" cfsqltype="cf_sql_varchar" list="true" />  )
</cfquery>

<cfquery datasource="#application.dsn#" name="GetLocationInfo">
    SELECT  trans_location, date, associate
    FROM    cl_checklists
    WHERE   date >=  <cfqueryparam value="#date1#" cfsqltype="cf_sql_timestamp" />
            AND date <= <cfqueryparam value="#date2#" cfsqltype="cf_sql_timestamp" />
            AND trans_location IN ( <cfqueryparam value="#FORM.location#" cfsqltype="cf_sql_varchar" list="true" />  )
</cfquery>

 <cffunction name="getop_id" access="public" returntype="string"> 
    <cfargument name="associate"  > 
    <cfquery name="spitOutop_id" datasource="#application.userinfo_dsn#"> 
        SELECT assoc_name 
        FROM dbo.tco_associates 
        WHERE assoc_id= #arguments.associate# 
    </cfquery> 
    <cfreturn spitOutop_id.assoc_name > 
 </cffunction> 

 <cfquery name="allAssociatesQry" dbtype="query">
    SELECT DISTINCT associate, COUNT(*) AS associateCount FROM GetEmployeeInfo GROUP BY associate ORDER BY associate 
 </cfquery>

<table border="1" id="Checklist_Stats">
    <thead>
        <th><strong>Associate Name</strong></th>
        <th><strong>Location</strong></th>
        <th><strong>Checklists Generated by Associate</strong></th>
        <th><strong>Checklists Generated by Selected Location(s)</strong></th>
        <th><strong>Associate Percentage of Location Total</strong></th>   
    </thead>
    <tbody>
      <!--- aggregate variables --->
      <cfset aggrAssociateChecklist = 0>
      <cfset aggrLocationChecklist = 0>

      <cfloop query="allAssociatesQry">
          <!--- get Associate name --->
          <cfset thisAssociateCode = trim(allAssociatesQry.associate)>
          <cfset thisAssociateName = getop_id(thisAssociateCode) />
          <!--- 1.1 get all trans_location code and total counts for the current Associate --->
          <cfquery name="allLocCodeForAssociateQry" dbtype="query">
              SELECT trans_location,count(trans_location) AS locCntr FROM GetEmployeeInfo WHERE associate='#thisAssociateCode#' GROUP BY trans_location ORDER BY trans_location
          </cfquery>
          <!--- 1.2 get the aggregate of checklist count generated by the current Associate for each location --->
          <cfquery name="qTotalChecklistCountForAssociate" dbtype="query">
              SELECT SUM(locCntr) AS totalAssocChecklist FROM allLocCodeForAssociateQry 
          </cfquery>

          <!--- 2.1 get the total location checklist for each location available for the current Associate --->
          <cfquery name="allLocChecklistForAssociateQry" dbtype="query">
              SELECT trans_location,count(trans_location) AS totalLocCount FROM GetLocationInfo WHERE trans_location IN (#QuotedValueList(allLocCodeForAssociateQry.trans_location)#) GROUP BY trans_location ORDER BY trans_location
          </cfquery>
          <!--- 2.2 get the aggregate of location checklist generated by the current Associate --->
          <cfquery name="qTotalLocChecklistForAssociate" dbtype="query">
              SELECT SUM(totalLocCount) AS totalLocChecklist FROM allLocChecklistForAssociateQry
          </cfquery>
          <!--- display record for the current Associate --->
            <cfoutput query="allLocCodeForAssociateQry">
              <tr>
                  <!---<td><strong>#thisAssociateCode#</strong></td>--->
                  <td><strong>#thisAssociateName#</strong></td>
                  <td>#allLocCodeForAssociateQry.trans_location#</td>
                  <td>#allLocCodeForAssociateQry.locCntr#</td>
                  <td>#allLocChecklistForAssociateQry['totalLocCount'][CurrentRow]#</td>
                  <td>#NumberFormat((allLocCodeForAssociateQry.locCntr/allLocChecklistForAssociateQry['totalLocCount'][CurrentRow]) * 100, '9.99')#%</td>
              </tr>
              <cfset thisAssociateName = "" />
            </cfoutput>
            <!--- 3.1 get sub total for each Associate group --->
            <cfset totalAssocChecklist = qTotalChecklistCountForAssociate.totalAssocChecklist>
            <cfset totalLocChecklist = qTotalLocChecklistForAssociate.totalLocChecklist>
            <!--- 3.2 add to the aggregate --->
            <cfset aggrAssociateChecklist += totalAssocChecklist>
            <cfset aggrLocationChecklist += totalLocChecklist>
            <!--- display sub total for each Associate group --->
            <cfoutput>
                <tr>
                    <td>Associate Total</td>
                    <td></td>
                    <td>#totalAssocChecklist#</td>
                    <td>#totalLocChecklist#</td>
                    <td>#NumberFormat((totalAssocChecklist/totalLocChecklist) * 100, '9.99')#%</td>
                </tr>
            </cfoutput>
      </cfloop>
</tbody>
</table>

      

Someone please tell me why this doesn't list the names of the associates in alphabetical order and then the locations in order after the names of the associates are in order?

I thought I was ORDER BY associate

doing this, but the names are completely scattered around. Any help would be greatly appreciated.

+3


source to share


2 answers


This should provide you with Associates in the order you want.

<cfquery datasource="#application.dsn#" name="GetEmployeeInfo">
    SELECT ltrim(rtrim(c.associate)) AS thisAssociateCode  --<< GetEmployeeInfo
        , a.assoc_name AS thisAssociateName --<< getop_id.assoc_name
        , c.trans_location --<< GetEmployeeInfo
        , c.[date] --<< GetEmployeeInfo
    FROM    cl_checklists c
    INNER JOIN dbo.tco_associates a ON c.associate = a.assoc_id
    WHERE   c.[date] >=  <cfqueryparam value="#date1#" cfsqltype="cf_sql_timestamp" />
            AND c.[date] <= <cfqueryparam value="#date2#" cfsqltype="cf_sql_timestamp" />
            AND c.trans_location IN ( <cfqueryparam value="#FORM.location#" cfsqltype="cf_sql_varchar" list="true" />  )
            AND c.associate IN ( <cfqueryparam value="#FORM.EmployeeName#" cfsqltype="cf_sql_varchar" list="true" />  )
    ORDER BY a.assoc_name
</cfquery>     

      

It will also allow you to remove the getop_id function.



And you can get rid of:

<cfset thisAssociateCode = trim(allAssociatesQry.associate)>
<cfset thisAssociateName = getop_id(thisAssociateCode) />

      

+1


source


Problem:

It looks like the query is allAssociatesQry

ordering by associated code rather than associating a name:

SELECT DISTINCT associate, COUNT(*) AS associateCount FROM GetEmployeeInfo GROUP BY associate ORDER BY associate

Since you then do:

<cfset thisAssociateCode = trim(allAssociatesQry.associate)>

      



Seems that the associated codes are not necessarily in the order of the names?

Suggested solution:

Change allAssociatesQry

to JOIN

to tco_associates

followed by the ORDER BY

associated name:

SELECT DISTINCT gei.associate, a.assoc_name, COUNT(*) AS associateCount FROM GetEmployeeInfo gei JOIN tco_associates a ON gei.associate = a.assoc_id GROUP BY gei.associate, a.assoc_name ORDER BY a.associateName

+1


source







All Articles