I meant order descending by actid too, sorry. But maybe im misunderstanding
your data structure since others see it a different way.

Another... way group your cfouput...

<!--- THIS WILL CREATE THE SAMPLE DATA YOU USED --->
<cfset q = querynew("crID,actID,description,owner")>

<cfset queryaddrow(q)>
<cfset querysetcell(q, "crid", 1)>
<cfset querysetcell(q, "actid", 1)>
<cfset querysetcell(q, "description", "Test")>
<cfset querysetcell(q, "owner", 444)>

<cfset queryaddrow(q)>
<cfset querysetcell(q, "crid", 1)>
<cfset querysetcell(q, "actid", 2)>
<cfset querysetcell(q, "description", "Test Update")>
<cfset querysetcell(q, "owner", 124)>

<cfset queryaddrow(q)>
<cfset querysetcell(q, "crid", 2)>
<cfset querysetcell(q, "actid", 1)>
<cfset querysetcell(q, "description", "Test")>
<cfset querysetcell(q, "owner", 578)>

<cfdump var="#q#">
<!--- END SAMPLE DATA ---------->


<!--- get all the records in order by crid with their highest actid first
--->
<cfquery name="rs" dbtype="query">
select * from q
order by crid, actid desc
</cfquery>


<!--- this will display exactly what was asked for --->
<!--- distinct crids with the highest actid of that crid --->
<pre>
crID    actID   description     owner
<cfoutput query="rs" group="crid">#crid#        #actID# #description#
#owner#
</cfoutput>
</pre>





-----Original Message-----
From: Ewok [mailto:[EMAIL PROTECTED] 
Sent: Friday, May 20, 2005 10:40 PM
To: CF-Talk
Subject: RE: SQL Query Question

Use distinct and order descending by crid. In the future, I highly recommend
a unique key (PK) or at least a date/time field to decide which are the
latest records

-----Original Message-----
From: Jeff Chastain [mailto:[EMAIL PROTECTED] 
Sent: Friday, May 20, 2005 9:59 AM
To: CF-Talk
Subject: OT: SQL Query Question

Sorry for the off-topic, but I have been beating on this one for a while and
the only answer I can find is really, really ugly.  So, hopefully somebody
knows more about queries that I do and can show me the error of my ways ....
 
I have a table that looks something like this ....
 
    crID    actID    description    owner
     1       1        Test           444
     1       2        Test Update    124
     2       1        Test           578
 
Now, what I need is a listing of all distinct crID records, where  the actID
is the greatest.  Basically, this is a history setup.  There are a series of
change requests (crID) that each have 1 or more actions (actID).  I need a
snapshot of the most recent status of each change request ( max(actID) ).
The problem I am having is with the aggregate functions and getting all of
the rest of the fields at the same time.  The following query returns the
correct crID / actID combination, but how do I get the other fields?  
 
    SELECT   crID, MAX(actID) AS actID
    FROM     test
    GROUP BY crID
 
The only thing I have come up with thus far is having to run another query
for each record returned in the above query in order to get the additional
details and a query per row just can't be a good thing.
 
The resulting data set that I am looking for would be as follows ....
 
    crID    actID    description    owner
     1       2        Test Update    124
     2       1        Test           578
 
Any pointers would be greatly appreciated and would save the few brain cells
I have left.
 
Thanks
-- Jeff







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Logware (www.logware.us): a new and convenient web-based time tracking 
application. Start tracking and documenting hours spent on a project or with a 
client with Logware today. Try it for free with a 15 day trial account.
http://www.houseoffusion.com/banners/view.cfm?bannerid=67

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:207348
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to