GriZZ
29-01-2005, 05:50
hallo leute,
ich hab heut morgen nen kleinen hänger und komm nicht weiter.
generell wollte ich aus zwei abfragen eine machen. in der tabelle hab ich eine eindeutige id. über die id wird mein datensatz angezeigt. nun möchte ich oben zwei links einbinden um jeweils einen datensatz vor oder zurück zu gehen. durch löschen, anlegen kopieren können die id's aber lückenhaft werden.
folgende abfragen sind im script:
gibt das maximum kleiner als 22 aus
SELECT MAX( id ) AS prev
FROM numbers
WHERE id < '22'
gibt das minimum grösser als 22 aus
SELECT MIN( id ) AS next
FROM numbers
WHERE id > '22'
Da ich aber mein script etwas übersichtlicher gestallten wollte, möchte ich das ganze aber in einer abfrage lösen, d.h ich gebe in der where bedingung meinen aktuellen datensatz an und will nun genau die nächst höhere oder niedriegere angezeigt bekommen.
dies brachte auch nicht die lösung, da es nur klappt, wenn es eine id gibt die höher ist und eine die niedriger ist.
SELECT MAX( t1.id ) AS prev,
MIN( t2.id ) AS next
FROM numbers AS t1, numbers AS t2
WHERE t1.id < '22' AND t2.id > '22'
Mit IF klappt es leider auch nur wenn die aktuelle id nicht am anfang oder am ende liegt.
SELECT IF ( MAX( t1.id ) = '22', NULL, MAX( t1.id ) ) AS prev,
IF ( MIN( t2.id ) = '22', NULL, MIN( t2.id ) ) AS next
FROM numbers AS t1, numbers AS t2
WHERE t1.id < '22' AND t2.id > '22'
es liegt wohl noch an der AND bedingung ?
eigentlich sollte es so sein, dass ich die aktuelle id angebe, wenn eine niedriegere vorhanden, prev = niedriegere id sonst prev = NULL, wenn eine höhere vorhanden, next = höhere id sonst next = null.
Über jede Hilfe / Gedankengang wäre ich dankbar.
GruZZ GriZZ
ich hab heut morgen nen kleinen hänger und komm nicht weiter.
generell wollte ich aus zwei abfragen eine machen. in der tabelle hab ich eine eindeutige id. über die id wird mein datensatz angezeigt. nun möchte ich oben zwei links einbinden um jeweils einen datensatz vor oder zurück zu gehen. durch löschen, anlegen kopieren können die id's aber lückenhaft werden.
folgende abfragen sind im script:
gibt das maximum kleiner als 22 aus
SELECT MAX( id ) AS prev
FROM numbers
WHERE id < '22'
gibt das minimum grösser als 22 aus
SELECT MIN( id ) AS next
FROM numbers
WHERE id > '22'
Da ich aber mein script etwas übersichtlicher gestallten wollte, möchte ich das ganze aber in einer abfrage lösen, d.h ich gebe in der where bedingung meinen aktuellen datensatz an und will nun genau die nächst höhere oder niedriegere angezeigt bekommen.
dies brachte auch nicht die lösung, da es nur klappt, wenn es eine id gibt die höher ist und eine die niedriger ist.
SELECT MAX( t1.id ) AS prev,
MIN( t2.id ) AS next
FROM numbers AS t1, numbers AS t2
WHERE t1.id < '22' AND t2.id > '22'
Mit IF klappt es leider auch nur wenn die aktuelle id nicht am anfang oder am ende liegt.
SELECT IF ( MAX( t1.id ) = '22', NULL, MAX( t1.id ) ) AS prev,
IF ( MIN( t2.id ) = '22', NULL, MIN( t2.id ) ) AS next
FROM numbers AS t1, numbers AS t2
WHERE t1.id < '22' AND t2.id > '22'
es liegt wohl noch an der AND bedingung ?
eigentlich sollte es so sein, dass ich die aktuelle id angebe, wenn eine niedriegere vorhanden, prev = niedriegere id sonst prev = NULL, wenn eine höhere vorhanden, next = höhere id sonst next = null.
Über jede Hilfe / Gedankengang wäre ich dankbar.
GruZZ GriZZ
