http://qs321.pair.com?node_id=155114

Kozz has asked for the wisdom of the Perl Monks concerning the following question:

Dear monks: Please forgive me for asking this question here, but in my estimation it seems that there are MANY monks here with extensive database experience.

I'll provide a minimal test-case for you to chew on. Given a MySQL table with the following content:

id | title | doc_num | version ---+-------+---------+-------- 1 | bar | 1234 | 1 2 | foo | 1234 | 2 3 | baz | 5678 | 1
I want to do something like
SELECT title, doc_num, MAX(version) AS version ORDER BY title; which produces this: title | doc_num | version -------+---------+-------- bar | 1234 | 2 baz | 5678 | 1
The problem is that the ORDER BY clause ends up sorting by the title of the older version, "bar" rather than the title for the latest version, "foo". Of course, what I REALLY want is the title from the document with the greatest version. Is there a way to do this in a single query, without using sub-selects or other such tedious things?

Or is my database hopelessly structured incorrectly?

My humblest thanks. If this question is hopelessly inappropriate, just "--" me into oblivion and please recommend a penance for my sins. ;)