Grouping and ordering - tricky problem, suggestions welcome

From: Date: Thu, 11 Dec 2003 21:51:54 +0000
Subject: Grouping and ordering - tricky problem, suggestions welcome
Groups: php.db 
Request: Send a blank email to php-db+get-32004@lists.php.net to get a copy of this message
Hi All - I have a query as below, which builds individual records from a series of 4 tables SELECT menuitems.tour_code, image_caption, image_code, region, country, product_type FROM tourcountries, tour_product, countries, menuitems LEFT OUTER JOIN image_ref ON image_ref.tour_code=menuitems.tour_code WHERE FIND_IN_SET('holiday',menuitems.types)>0 AND menuitems.tour_code=tour_product.product_code AND tour_product.id=tourcountries.holiday_id AND tourcountries.country_id=countries.country_id AND countries.country_id=1 GROUP BY tour_code"; This works as desired, returning one correctly formed result row with ancilliary information (caption, image, region etc), for each tour_product ID in my table. However I am unable to see a way to pick the minimum image_code value from the image_ref table. The LEFT OUTER JOINclause is necessary, because the table image_ref on which I do a contains between zero and many matching rows. I need to return only one row containing a product and a single image code, so I then use GROUP BY tour_code to reduce the rows to one. For this query, I wish to return the *minimum* value of image_code, and return all this as one row. Usually what I get back though is the last image_code, as a result of the GROUP BY clause As you might imagine, this is quite tricky but I'm trying to determine if it's impossible using a single query : What I intend to happen, is ORDER BY image_code ASC , *before* grouping (I know I can't do that !), so that the returned row contains the earliest possible image_code. Any suggestions if there are avenues I might explore here > ? Cheers all - Neil Smith.

« previous php.db (#32004) next »