Given a database table which contain images in different resolutions for products like this:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| article_id | int(11) | YES | | NULL | |
| width | int(11) | YES | | NULL | |
| height | int(11) | YES | | NULL | |
| filename | varchar(255) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Imagine to select only the biggest image for a couple of article ids you could try something like this:
SELECT article_id, width, height, filename
FROM article_images
WHERE article_id IN(23, 42)
GROUP by article_id
ORDER by width*height
But you'll only get the first entry for a given article_id, not for the biggest resolution.
So let's try another approach:
SELECT article_id, width, height, filename
FROM (SELECT article_id, width, height, filename
FROM article_images
WHERE article_id IN(23, 42)
ORDER by width*height
) as ghoti
GROUP by article_id
This query first selects all images in all resolutions for the given article_ids and sorts it by resolution, copying it into a temporary table named ghoti. The query around this subselect then groups the data by article_id. Because we have sorted by resolution before it results in the biggest image for a given article_id.
ghoti is our name used internally for that kind of SELECT, because we need it sometimes to transfer less data to our PHP scripts and crunch data on the database server. What ghoti means is described in this wikipedia article.