yo,
nachdem mir meine freundin erst den kopf gewaschen und dann die haare geschnitten hat, hatte ich ein wenig zeit über die abfrage nachzudenken. mein erste ansatz war schon der richtige, das ziel erreicht man índem man die spaltensortierung mitnimmt. aber meine erste umsetzung war nicht so ganz das gelbe vom ei.
die unterabfrage bleibt, wir brauchen sie, um die 3 spalten zu "merken". nur teilen wir sie diesmal auf, damit wir sie in die WHERE klausel einbauen können, sortieren sie und schneiden jeweils den ersten datensatz ab.
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)
AND t1.spalte2 <=
(SELECT u2.Spalte2 FROM Tabelle AS u2 WHERE u2.ID = $wert)
AND t1.spalte3 <=
(SELECT u3.Spalte3 FROM Tabelle AS u3 WHERE u3.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)
AND t1.spalte2 >=
(SELECT u2.Spalte2 FROM Tabelle AS u2 WHERE u2.ID = $wert)
AND t1.spalte3 >=
(SELECT u3.Spalte3 FROM Tabelle AS u3 WHERE u3.ID = $wert)
ORDER BY t1.spalte1,t1.spalte2,t1.spalte3
LIMIT 1
das sieht doch schon viel besser aus und klappt auch hoffentlich in der praxis...
Ilja