Hi David,

David Ruggles wrote:
<snip>
Supplyorder
        uid     double (auto) (pk)
        site    double
        date    date

Supplyorderhistory
        uid     double (auto) (pk)
        supplyorderuid  double  
        status  double

Supplyorderlineitems
        uid     double (auto) (pk)
        supplyorderhistoryuid   double
        other fields ...

Each time an existing supply order is modified a new history record is
created so we have a paper trail of all the changes made to the order and
the specific line items ordered are associated with the history record.

I want to select for a given date all sites that have the last history
record with a certain status.

<snip>

David Ruggles
CCNA MCSE (NT) CNA A+
Network Engineer        Safe Data, Inc.
(910) 285-7200  [EMAIL PROTECTED]

This takes two steps. First we find the last histories:

CREATE TEMPORARY TABLE tmpLastChanges
SELECT MAX(h.uid) max_id, h.supplyorderuid FROM supplyorderhistory AS h
WHERE date = '2007-01-08' GROUP BY h.supplyorderuid;

Then use that list to get the actual records you seek:

SELECT max_id, site FROM tmpLastChanges tlc
INNER JOIN supplyorderhistory h
 on tlc.max_id = h.uid
 AND h.status = 2
INNER JOIN supplyorder AS s, WHERE h.supplyorderuid = s.uid;

This is just one way to implement a "group-wize maximum" query pattern. Search 
the list and the rest of the web for this term and you will see many other variations.


--
Shawn Green, Support Engineer
MySQL Inc., USA, www.mysql.com
Office: Blountville, TN

Are you MySQL certified?  www.mysql.com/certification
  __  ___     ___ ____  __
/ |/ /_ __/ __/ __ \/ / / /|_/ / // /\ \/ /_/ / /__ /_/ /_/\_, /___/\___\_\___/ <___/ www.mysql.com


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to