Moin,
So, ich möchte eine komfortablere und elegantere sowie performantere Lösung nicht vorenthalten.
SELECT * FROM entries WHERE id IN (
SELECT d.id FROM
( SELECT f.id, @k := @k+1 AS pos, if(id = 88900 , @y := @k, @y:=@y ) FROM
(SELECT id FROM entries ORDER BY price DESC) f,
(SELECT @k := 0 FROM DUAL) AS c
) d
WHERE d.pos BETWEEN @y-1 AND @y+1
) LIMIT 0,3
Ausführungszeit bei 25 TSD Datensätzen: 40 - 60ms
Gruß Bobby
--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)