I have a query that I need to add a ORDER BY statement to…
I am trying to make it grab a spacific image to display when loading aposed to the last image added.
I have added a field called “showcase” in the car images table and am wanting showcase filed marked as “1” to be the default photo.
Code:
$sql = "SELECT c.carid
, c.year
, c.manufacturerid
, c.model
, c.mileage
, c.price
, c.description
, c.availability
, p.photofilename
, m.make
FROM cars as c
INNER
JOIN manufacturer as m
ON m.manufacturerid = c.manufacturerid
LEFT OUTER
JOIN ( SELECT carid
, MAX(photoid) AS latest
FROM carimages
GROUP
BY carid ) AS x
ON x.carid = c.carid
LEFT OUTER
JOIN carimages as p
ON p.carid = c.carid
AND p.photoid = x.latest
".$where."
ORDER
BY c.carid DESC
LIMIT $from
, $max_results";
that’s astonishing… it looks ~exactly~ like something i might have written
SELECT c.carid
, c.year
, c.manufacturerid
, c.model
, c.mileage
, c.price
, c.description
, c.availability
, p.photofilename
, m.make
FROM cars as c
INNER
JOIN manufacturer as m
ON m.manufacturerid = c.manufacturerid
LEFT OUTER
JOIN carimages as p
ON p.carid = c.carid
[COLOR="Blue"]AND p.showcase = 1[/COLOR]
".$where."
ORDER
BY c.carid DESC
LIMIT $from
, $max_results
let’s stick with latest as the default… random is even messier!!
SELECT c.carid
, c.year
, c.manufacturerid
, c.model
, c.mileage
, c.price
, c.description
, c.availability
, COALESCE( [COLOR="Red"]p2.photofilename[/COLOR]
, [COLOR="Blue"]p.photofilename[/COLOR] ) AS photofilename
, m.make
FROM cars as c
INNER
JOIN manufacturer as m
ON m.manufacturerid = c.manufacturerid
[COLOR="blue"]LEFT OUTER
JOIN ( SELECT carid
, MAX(photoid) AS latest
FROM carimages
GROUP
BY carid ) AS x
ON x.carid = c.carid
LEFT OUTER
JOIN carimages as p
ON p.carid = c.carid
AND p.photoid = x.latest[/COLOR]
[COLOR="Red"]LEFT OUTER
JOIN carimages as p2
ON p2.carid = c.carid
AND p2.showcase = 1[/COLOR]
".$where."
ORDER
BY c.carid DESC
LIMIT $from
, $max_results