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
gibt das minimum grösser als 22 aus
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.
Mit IF klappt es leider auch nur wenn die aktuelle id nicht am anfang oder am ende liegt.
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
PHP-Code:
SELECT MAX( id ) AS prev
FROM numbers
WHERE id < '22'
PHP-Code:
SELECT MIN( id ) AS next
FROM numbers
WHERE id > '22'
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.
PHP-Code:
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'
PHP-Code:
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'
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
Kommentar