in mySQL höchste ID rausfinden ?
lebende hose
- datenbank
Hi!
Ich möchte in mySQL die höchste ID in einer Tabelle rausfinden. mit "mysql_insert_id()" hab ichs schon probiert, aber das bringt ja nur was, wenn davor auch was eingegeben wurde.
dann habe ich es mit "mysql_num_rows()" probiert und das klappt.
Dafür muss ich aber vorher mit select * from... die Datensätze auslesen, ich brauche aber nur die höchste ID um anzugeben wieviele Datensätze drin sind. Jetzt hab ich mir gedacht, dass es vielleicht eine mySQL oder PHP Funktion gibt, die einfach die höchste ID rausholt und sonst nix.
Danke!
Hallo lebende Hose,
wenn die Hose lebt, ist der Inhalt dann etwa t..? Na egal, zur Sache:
Schonmal select max(id) from mytable; probiert?
Weiß nicht, ob das Standard-SQL ist, geht jedenfalls in Oracle so.
Gruß,
Andreas
Jepp!
Geht auch bei MySQL!
Andreas
Schonmal select max(id) from mytable; probiert?
habs probert, bekomme irgendwas wie "resource id #4" zurück.
Hi,
habs probert, bekomme irgendwas wie "resource id #4" zurück.
des g'hört so. Diese Resource ID musst Du jetzt verwenden, um das Ergebnis abzufragen. Die Dokumentation von PHP findest Du unter http://www.php.net/.
Cheatah
Also bei mir ging es so:
<?
$res=mysql_connect ( "127.0.0.1", "username", "ich verrat doch nich mei Passwort *g*");
$db = mysql_select_db("meine_db",$res);
$res = mysql_query("select max(nummer) from liste;");
$row = mysql_fetch_row($res);
echo $row[0];
?>
Ausgabe ist "3" - und das stimmt auch
Beste Grüße
Hi,
dann habe ich es mit "mysql_num_rows()" probiert und das klappt.
Dafür muss ich aber vorher mit select * from... die Datensätze auslesen, ich brauche aber nur die höchste ID um anzugeben wieviele Datensätze drin sind. Jetzt hab ich mir gedacht, dass es vielleicht eine mySQL oder PHP Funktion gibt, die einfach die höchste ID rausholt und sonst nix.
das funktioniert ja alles nur so lange, wie keine Datensätze entfernt werden, d.h. die IDs wirklich durchgehend sind. Versuch es mal so (ich geh mal von PHP aus):
$query = mysql_query("SELECT COUNT(*) FROM tabelle");
$row = mysql_fetch_row( $query );
$ANZAHL = $row[0];
Ohne Query auf die Datenbank kommst Du zwar nicht aus, aber diese hier gibt nur einen Datensatz mit einer Spalte (nämlich der Anzahl) zurück.
Danke!
Bitte!
Viele Grüsse,
Achim
Hallo Achim,
wie Du selber schreibst funzt das nur, wenn nie ein Datensatz gelöscht wird.
Also ich finde es besser, zu schreiben
$query = mysql_query("SELECT max(id) FROM tabelle");
$row = mysql_fetch_row( $query );
$maxID = $row[0];
Gruß,
Andreas
super hat gefunzt, danke !
war ein kleiner fehler meinerseits :)
Hi,
wie Du selber schreibst funzt das nur, wenn nie ein Datensatz gelöscht wird.
damit meinte ich die Lösung von lebende Hose und nicht meine! Mein Statement _zählt_ die Datensätze, Deines gibt den höchsten Wert in der Spalte "id" aus. Das heisst, bei Deiner Lösung könnte nur ein einziger Datensatz in der Tabelle sein und das Skript liefert die die Zahl 123 (z.B.), weil es eben gerade die höchste ID ist.
Und das ist wohl das was lH wollte:
ich brauche aber nur die höchste ID um anzugeben wieviele Datensätze drin sind.
Viele Grüsse,
Achim
Hi!
Warum geht das eigentlich nicht mit "AS Variable"? Bei mir jedenfalls nicht:
$query = mysql_query("SELECT max(id) AS maxID FROM tabelle");
echo "$maxID";
Wann kann man "AS" benutzen und wann nicht? Ich lese das des öfteren, konnte es aber noch nie verwenden. Was mache ich falsch?
Grüsse
Andreas
Moin!
Warum geht das eigentlich nicht mit "AS Variable"? Bei mir jedenfalls nicht:
$query = mysql_query("SELECT max(id) AS maxID FROM tabelle");
echo "$maxID";
Wann kann man "AS" benutzen und wann nicht? Ich lese das des öfteren, konnte es aber noch nie verwenden. Was mache ich falsch?
Da fehlt noch die Abfrage des Ergebnisses. Das Verwenden von "AS irgendwas" erzeugt immer noch eine Tabelle als Ergebnis, allerdings wird das Ergebnis jetzt im Spaltenname "irgendwas" aufgeführt.
Ich empfehle zum besseren Verständnis, mal ein wenig mit phpMyAdmin rumzuspielen und dort Abfragen auszuführen. Da sieht man auch sofort, ob das SQL-Statement überhaupt geht, und was es liefert. Zum Erstellen von SQL-Statements ist das ziemlich gut geeignet. :)
- Sven Rautenberg