Ilja: MySQL: Datensazu vor und nach Datensatz X ermitteln

Beitrag lesen

yo,

wirklich nicht mein tag heute, die WHERE KLausel mit den unterabfragen stimmt noch nicht ganz, sie schließt zuviele datensätze aus.

SELECT t1.id, t1.Spalte1, t1.Spalte2, t1.Spalte3
FROM tabelle AS t1
WHERE t1.spalte1 <
  (SELECT u1.Spalte1 FROM Tabelle AS u1 WHERE u1.ID = $wert)
OR t1.spalte1 =
  (SELECT u2.Spalte1 FROM Tabelle AS u2 WHERE u2.ID = $wert)
AND t1.spalte2 <
  (SELECT u3.Spalte2 FROM Tabelle AS u3 WHERE u3.ID = $wert)
OR t1.spalte1 =
  (SELECT u4.Spalte1 FROM Tabelle AS u4 WHERE u4.ID = $wert)
AND t1.spalte2 =
  (SELECT u5.Spalte2 FROM Tabelle AS u5 WHERE u5.ID = $wert)
AND t1.spalte3 <=
  (SELECT u6.Spalte3 FROM Tabelle AS u6 WHERE u6.ID = $wert)
ORDER BY t1.spalte1 DESC ,t1.spalte2 DESC,t1.spalte3 DESC
LIMIT 1

UNION

SELECT t1.id, t1.Spalte1, t1.Spalte2, t1.Spalte3
FROM tabelle AS t1
WHERE t1.spalte1 >
  (SELECT u1.Spalte1 FROM Tabelle AS u1 WHERE u1.ID = $wert)
OR t1.spalte1 =
  (SELECT u2.Spalte1 FROM Tabelle AS u2 WHERE u2.ID = $wert)
AND t1.spalte2 >
  (SELECT u3.Spalte2 FROM Tabelle AS u3 WHERE u3.ID = $wert)
OR t1.spalte1 =
  (SELECT u4.Spalte1 FROM Tabelle AS u4 WHERE u4.ID = $wert)
AND t1.spalte2 =
  (SELECT u5.Spalte2 FROM Tabelle AS u5 WHERE u5.ID = $wert)
AND t1.spalte3 >=
  (SELECT u6.Spalte3 FROM Tabelle AS u6 WHERE u6.ID = $wert)
ORDER BY t1.spalte1, t1.spalte2,t1.spalte3
LIMIT 1

und das sind dann doch nicht mehr so gut aus, naja, der wille war da, das fleisch ist heute aber irgendwie schwach. daür kann ich meinem lieblingssatz auch bei mir anwenden, wir sind alle nur menschen, auch ich....

Ilja