bobby: Optimierung MySQL-Query

Beitrag lesen

Moin,

Frage an die Profis: kann man das noch optimieren? Grundproblem, ich hab eine Tabelle entries und ich möchte einen Eintrag ausgeben und auch den Vorgänger und den Nachfolger in einer sortierten Liste bestimmen (hier anhand price sortiert). Die Abfrage funktioniert. Allerdings ist sie recht komplex. geht es vielleicht noch eleganter?

SELECT k.*, @c l 
  FROM 
    (SELECT * FROM entries ORDER BY price DESC) k, 
    (SELECT @c := 0 AS u FROM DUAL) p, 
    (select d.pos FROM 
      (SELECT @k := @k+1 AS pos, IF(f.id = 1286, 1, 0) AS test FROM 
        (SELECT * from entries ORDER BY price DESC) f, 
        (SELECT @k := 0 FROM DUAL) AS c 
      GROUP BY test ORDER BY test DESC LIMIT 0,1) d
    ) u 
WHERE (@c := @c+1) BETWEEN u.pos -1 AND u.pos +1

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:)

akzeptierte Antworten