möchte gern meine Datenbankausgabe auf die zuletzt eingegebene Eingabe beschränken - hatte einst den Code i++; und dann irgendwas mit limit 1, wer kennt zufällig den vollen Code dafür ?
"zuletzt eingegebene Eingabe" - du weisst aber schon was du machst, oder? SELECT * FROM tbl LIMIT 1;
allerdings weiß ich das - aber dieser Code gibt mir leider nur die zuerst eingegebenen Datensatz aus, ich will aber den letzen Datensatz haben ! Es soll ja nicht jeder immer den gleichen, vom ersten anmelder kriegen.
Sortiere doch absteigend nach dem Primärschlüssel und limitiere die Ausgabe auf 1.
Tim schrieb: > Sortiere doch absteigend nach dem Primärschlüssel und limitiere die > Ausgabe auf 1. ok, gern, aber wie ?
SELECT * FROM tbl ORDER BY primärschlüssel DESC LIMIT 1; Wenn es genauer sein soll musst du mal das Schema rausrücken.
Tim schrieb: > SELECT * FROM tbl ORDER BY primärschlüssel DESC LIMIT 1; > > Wenn es genauer sein soll musst du mal das Schema rausrücken. Aber das gibt doch nur den ersten Eintrag aus, oder ?
>Aber das gibt doch nur den ersten Eintrag aus, oder ?
Ja, den 1. Eintrag der Tabelle die nach dem Primärschlüssel rückwärts
sortiert (ORDER BY ... DESC) wurde.
Ergo steht der letzte Eintrag oben. Genau den wolltest du doch,
oder habe ich etwas falsch verstanden?
Tim schrieb: >>Aber das gibt doch nur den ersten Eintrag aus, oder ? > > Ja, den 1. Eintrag der Tabelle die nach dem Primärschlüssel *rückwärts* > sortiert (ORDER BY ... DESC) wurde. > Ergo steht der letzte Eintrag oben. Genau den wolltest du doch, > oder habe ich etwas falsch verstanden? Stimmt, hatte ich dann wohl falsch verstanden, also kam der Tipp mit Select * und so weiter Desk limit 1; von Dir - ja ?
ja, "SELECT * FROM tbl ORDER BY primärschlüssel DESC LIMIT 1;" hatte ich vorgeschlagen und weiter? ggf gibt es ja bei deiner Datenbank noch schneller möglichkeiten. Also Dokumentation lesen...
Tim schrieb: > ja, "SELECT * FROM tbl ORDER BY primärschlüssel DESC LIMIT 1;" > hatte ich vorgeschlagen und weiter? > > ggf gibt es ja bei deiner Datenbank noch schneller möglichkeiten. > Also Dokumentation lesen... Nun, ich wollte mich nur dafür bedanken, da der Code funktioniert - habe ihn nun schon auf nem anderen externen Server abgesichert, um ihn nicht auch wieder zu verliehren - Danke !
Hallo, Wenn dein Primarykey auto-inkrement ist, bzw. dein letzter Eintrag immer den höchsten Wert hat, müsstest du mit folgendem Syntax deine letzte Eingabe abrufen können. "SELECT * FROM tbl WHERE MAX(primärschlüssel);" Gruß
das ganze ist trotzdem mit Vorsicht zu genießen. wenn mehrere auf die Datenbank zugreifen (dafür sind sie ja schließlich da) kann es natürlich sein, dass der letzte Datensatz nicht der ist, den du zu finden erwartest. hierfür muss das insert und das select teil einer transaktion sein.
Vlad Tepesch schrieb: > das ganze ist trotzdem mit Vorsicht zu genießen. > wenn mehrere auf die Datenbank zugreifen (dafür sind sie ja schließlich > da) kann es natürlich sein, dass der letzte Datensatz nicht der ist, den > du zu finden erwartest. > > hierfür muss das insert und das select teil einer transaktion sein. sorry, aber das verstehe ich nun überhaupt nicht.
session1 macht insert session2 macht insert session1 fragt nach max id -> bekommt id von insert aus session2 session2 fragt nach max id -> bekommt id von eigenem insert
Wenn du nur die ID des zuletzt eingefügten Eintrags benötigst gibt es meisten die funktion last_insertid() welche Verbindungsbasiert arbeitet, also auch keine Probleme mit mehreren Zugriffen hat. Transaktion funktioniert leider auch nicht auf jedem DBMS
naja, für all dies, bin ich wohl noch zu wenig ein "Webdesigner und Programmierer" - eigentlich gar nicht.
Du könntest Dir ja ein Buch über SQL besorgen und es durcharbeiten.
die Sache mit dem PK hat aber einen Haken. Denn die Reihenfolge des PK's muß schließlich nicht mit der Reihenfolge der Eingaben zusammenhängen (je nachdem, was verantwortlich für das Auffüllen des PK ist). Ich würde sowas evtl. mit einer Zusatzspalte machen, die automatisch mit jedem Insert einen höheren Wert bekommt, z.B. autoincrement, oder aber current Timestamp, den man als Default eintragen läßt, so daß man sogar weiß, wann was eingetragen wurde (weis nicht, ob das deine DB kennt). Das von Läubi angegebene last_insertid() kenne ich dagegen nicht - kenne mich mit SQL Server nicht weiter aus.
Jens G. schrieb: > die Sache mit dem PK hat aber einen Haken. Denn die Reihenfolge des PK's > muß schließlich nicht mit der Reihenfolge der Eingaben zusammenhängen > (je nachdem, was verantwortlich für das Auffüllen des PK ist). > Ich würde sowas evtl. mit einer Zusatzspalte machen, die automatisch mit > jedem Insert einen höheren Wert bekommt, z.B. autoincrement, oder aber > current Timestamp, den man als Default eintragen läßt, so daß man sogar > weiß, wann was eingetragen wurde (weis nicht, ob das deine DB kennt). > Das von Läubi angegebene last_insertid() kenne ich dagegen nicht - kenne > mich mit SQL Server nicht weiter aus. Das läuft auf autoincrement ID
Nein die Last Insert ID hat den Wert des letzten Inserts dieser kann aber ungleich dem aktuellem autoincrement sein... Siehe: http://dev.mysql.com/doc/refman/5.1/de/information-functions.html Wenn ich also den Wert für die auto_increment spalte (welche optimlaerweise auch der Primary key ist) vorgebe hat es auch diesen Wert, wurde der Wert automatisch vergeben hat er eben jenen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.