nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

SELECT lnr,a,b,c FROM t1 ORDER BY c = Nächster Datendatz

Von: Jaromir Prinzler (jprinzler@tplan-gmbh.de) [Profil]
Datum: 24.09.2009 10:07
Message-ID: <h9f9bd$qa5$1@online.de>
Newsgroup: de.comp.datenbanken.mysql
Hallo !

Ich habe hier ein kleine Frage zu MySQL und SELECT:

Es existiert eine Tabelle mit einem Index (lnr) und entsprechenden Inhalten.
Eine normales SELECT würde so aussehen:

SELECT lnr,a,b,c FROM t1 ORDER BY c;

Die Sortierreihenfolge wird also durch c bestimmt.

Nun kenne ich (programmtechnisch) den Index einer Zeile (lnr) innerhalb der
Tabelle und möchte die darauf folgende
unter Beachtung der Sortierfolge ermitteln.

Da "c" aber kein nummerischer Wert ist, sondern in Abhängigkeit
anderer Werte innerhalb einer Zeile berechnet wird, kann ein
WHERE c > ... ODER auch WHERE lnr > ... nicht funktionieren.

LIMIT 1 ist mir auch klar, aber irgendwie fehlt mir noch ein Schups?

...Jaro


PS: Die eigendliche Abfrage sieht so aus:

SELECT
lnr,gebaeude,bauteil,gewerk,los,titel,position,inx,kurztext,menge,einheit,internaltyp,inte
rnalstate
FROM t1
ORDER BY
IF((internaltyp & (1|128)) = (1+128),2,IF((internaltyp & (1|256))
(1+256),4,3)),
gebaeude,
IF((internaltyp & (2|128)) = (2+128),2,IF((internaltyp & (2|256))
(2+256),4,IF((internaltyp & 2) > 0,1,3))),
bauteil,
IF((internaltyp & (4|128)) = (4+128),2,IF((internaltyp & (4|256))
(4+256),4,IF((internaltyp & 4) > 0,1,3))),
gewerk,
IF((internaltyp & (8|128)) = (8+128),2,IF((internaltyp & (8|256))
(8+256),4,IF((internaltyp & 8) > 0,1,3))),
los,
IF((internaltyp & (16|128)) = (16+128),2,IF((internaltyp & (16|256))
(16+256),4,IF((internaltyp & 16) > 0,1,3))),
titel,
IF((internaltyp & (32|128)) = (32+128),2,IF((internaltyp & (32|256))
(32+256),4,IF((internaltyp & 32) > 0,1,3))),
position,
IF((internalstate & 2048) > 0,2,1),
inx



[ Auf dieses Posting antworten ]

Antworten