It takes two steps: first determine the max(closedate) for each symbol, 
then use those results to get the name field. You could do this with a 
subquery (both steps in the one statement) because you are using a version 
of MySQL > 4.0.0 but here is a temp table implementation that will work 
with just about anyone.

CREATE TEMPORARY TABLE tmpSymbols
SELECT symbol, max(close_date) as last_date
FROM TD
WHERE symbol in (<list of symbols>)
GROUP BY symbol;

SELECT ts.symbol, ts.last_date, TD.name
FROM tmpSymbols ts
INNER JOIN TD
        ON TD.symbol = ts.symbol
        AND TD.close_date = ts.last_date;


Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine



Jeff Mathis <[EMAIL PROTECTED]> wrote on 10/14/2004 02:22:32 PM:

> hello query gurus.
> 
> we have a table TD with the following columns:
> 
> close_date
> symbol
> name
> 
> close_date is just a date field
> 
> there is a unique constraint on the combination of close_date and 
symbol.
> 
> what we want is the value for the name field corresponding to the row 
> with the most recent close_date.
> 
> something like this:
> 
> select max(close_date), symbol, name from TD where symbol in (<list of 
> characters>) group by symbol;
> 
> this returns the max close_date value, but the name that is returned is 
> garbage and seems to point to the earliest row in the table.
> 
> any suggestions?
> 
> jeff
> 
> ps we're using mysql 4.1.3 with the innodb engine
> 
> 
> -- 
> Jeff Mathis, Ph.D.         505-955-1434
> Prediction Company         [EMAIL PROTECTED]
> 525 Camino de los Marquez, Ste 6   http://www.predict.com
> Santa Fe, NM 87505
> 
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> 

Reply via email to