Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

PHP: Nächsthöchster und Nächstniedrigester Datensatz

fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 02.11.2006 um 14:17 Uhr
Zuletzt editiert am: 02.11.2006 um 14:18 Uhr

Hallo,

wie kann ich mit PHP und MySQL (wenn ich ne ID hab) den jeweils größeren und kleineren Datensatz rausfinden? Wenn möglich mit nur einem Query.

Also ich hab z.B. folgende IDs:

1
4
8 (von da aus die "einschließenden" Datensätze, die will ich)
9
12

Danke schonmal ;-)
Ottmann - 37
Fortgeschrittener (offline)

Dabei seit 03.2003
76 Beiträge

Geschrieben am: 02.11.2006 um 14:31 Uhr
Zuletzt editiert am: 02.11.2006 um 14:34 Uhr

select min(id), max(id) from TABELLENNAME;

zumindest geht des bei PostgreSQL so

/edit
hab geschaut geht bei mysql au sp
fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 02.11.2006 um 14:33 Uhr

nimmt er dann nciht den allergrößten und allerkleinsten?
Ottmann - 37
Fortgeschrittener (offline)

Dabei seit 03.2003
76 Beiträge

Geschrieben am: 02.11.2006 um 14:34 Uhr

axo du willst von einer bestimmten id den eintrag darüber und den darunter haben?
fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 02.11.2006 um 14:36 Uhr

Jo, genau :-)
Ottmann - 37
Fortgeschrittener (offline)

Dabei seit 03.2003
76 Beiträge

Geschrieben am: 02.11.2006 um 14:40 Uhr

naja du könntest einfach
select id from foo where id=$id-1;
select id from foo where id=$id+1;

machen^^

jedoch wird es dann des problem sein dass die id nicht immer fortlaufen ist oder?
fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 02.11.2006 um 14:44 Uhr

Zitat von Ottmann:

naja du könntest einfach
select id from foo where id=$id-1;
select id from foo where id=$id+1;

machen^^

jedoch wird es dann des problem sein dass die id nicht immer fortlaufen ist oder?


ja... that's the problem :-(
TheBrainless - 38
Experte (offline)

Dabei seit 04.2005
1992 Beiträge

Geschrieben am: 02.11.2006 um 15:02 Uhr

mit einem query wirds schwierig... mit 2 wüsste ich ne lösung

einfach SELECT * FROM db WHERE `id` > id LIMIT 1 ORDER BY id ASC
und dann das ganze mit WHERE `id`< id LIMIT 1 ODER BY id DESC
dann bekommst du auf jeden fall den nächsthöheren/niedrigeren Satz...

Mörps mörps blubbs!

Interior - 42
Team-Ulmler (offline)


Dabei seit 08.2002
1274 Beiträge

Geschrieben am: 02.11.2006 um 15:10 Uhr

klar geht das auch in einem:
SELECT max(ID) from table where id < $range_ID UNION SELECT min(ID) from table where id > $range_ID;

fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 02.11.2006 um 16:04 Uhr
Zuletzt editiert am: 02.11.2006 um 16:08 Uhr

Ist es mit 2 Querys schneller, oder mit einem?

@interrior: was hat das range zu sagen?

EDIT: das ist wohl die ID zwischen den gesuchten werten
TheBrainless - 38
Experte (offline)

Dabei seit 04.2005
1992 Beiträge

Geschrieben am: 02.11.2006 um 16:07 Uhr

ein query ist auf jeden fall schneller...

Mörps mörps blubbs!

fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 02.11.2006 um 16:12 Uhr

OK, dann danke an euch :-)
fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 03.11.2006 um 22:19 Uhr
Zuletzt editiert am: 03.11.2006 um 22:21 Uhr

problem:

wie komm ich an die IDs mit PHP ran?

irgendwie klappt da wat nich

$get_arround = "SELECT MIN(ID) AS min FROM table WHERE ID > \"$id\" UNION SELECT MAX(ID) AS max FROM table WHERE ID < \"$id\"";
$arround = mysql_query($get_arround);

while($row = mysql_fetch_object($arround))
{
$max = $row->max;
$min = $row->min;
}

echo "max: ".$max." min: ".$min;


es wird immer nur das vor dem UNION (also min(id)) ausgegeben
  [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -