watchout
Legendundead
|
select max(id) from dvd; oder select * from dvd order by id desc limit 1;
wennst die datensätze nicht auch wieder rauslöschst, sodass löcher entstehen und diese wieder befüllt werden. also, ich weiss jetzt nicht ganz wie ich den letzten satz verstehen soll, auf jeden fall funktioniert keine der oberen formen, wenn 'Löcher' entstehen, und diese wieder befüllt werden - ehrlichgesagt weiss ich garnicht, ob das mysql überhaupt so macht. falls dem so ist, musst du halt ein datum-feld hinzufügen, dann kannst du das simpel und 100% richtig mit SELECT * FROM dvd WHERE datum=MAX(datum); oder halt SELECT * FROM dvd ORDER BY datum DESC LIMIT 1; aber ich glaub ersteres is schneller... (puh, sql is auch schon wieder lang her )
|
Maxx666
Kitemaniac
|
... also bei meiner mysql datenbank entstehen löcher...die auch wieder, nach einen noch nicht genauer gecheckten modi, befüllt werden. vielleicht ists ja auch einstellungssache. hab mich noch nie genauer damit beschäftigt. egal. ein datumsfeld, eliminiert allerdings die problematik...schon richtig btw: deine erste abfrage funktioniert nicht!
Bearbeitet von Maxx666 am 30.10.2002, 12:44
|
grOOvekill@
LegendVienna Badass
|
kuckt mal:
habe ein verschachteltes select gemacht, das eigentlich genau das anzeigt, was ich brauche:
$aktuell=(mysql_query("select titel from dvd where id=(SELECT max(id) FROM dvd)"));
und dann ein:
printf ("%s",$aktuell);
Aber da tut sich goar nüscht! Schon wieder was vergessen?
|
watchout
Legendundead
|
also bei meiner mysql datenbank entstehen löcher...die auch wieder, nach einen noch nicht genauer gecheckten modi, befüllt werden. vielleicht ists ja auch einstellungssache. hab mich noch nie genauer damit beschäftigt. egal.
ein datumsfeld, eliminiert allerdings die problematik...schon richtig
btw: deine erste abfrage funktioniert nicht! ((hast du ein datum-feld gemacht? nein - dass wette ich )) <--- personen vertauscht löcher haben mich bis jetzt noch garnicht interessiert... hab wo ichs gebraucht hab immer ein datum-feld verwendet... warum sollte erstere abfrage nicht funktionieren???
Bearbeitet von watchout am 30.10.2002, 14:48
|
Ringding
Pilot
|
Wie schon einmal in diesem Thread beschrieben, liefert mysql_query ein Result, das du dann erst z.B. mit mysql_fetch_array auslesen musst.
|
grOOvekill@
LegendVienna Badass
|
Das habe ich mittlerweile schon versucht. Hier mein Versuch:
$result = mysql_query("select titel from dvd where id=(SELECT max(id) FROM dvd)"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf ("Aktuellster Film: %s", $row); }
Ich krieg aber trotzdem eine Fehlermeldung. Sorry, daß ich Euch hier so lange auf die Nerven damit gehe, aber ich komme eher aus der C-Richtung und tu noch nicht so lange in PHP.
|
Maxx666
Kitemaniac
|
Das habe ich mittlerweile schon versucht. Hier mein Versuch:
$result = mysql_query("select titel from dvd where id=(SELECT max(id) FROM dvd)"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf ("Aktuellster Film: %s", $row); }
Ich krieg aber trotzdem eine Fehlermeldung. Sorry, daß ich Euch hier so lange auf die Nerven damit gehe, aber ich komme eher aus der C-Richtung und tu noch nicht so lange in PHP. printf ("Aktuellster Film: %s", $row [0]); sollte es schon sein
|
grOOvekill@
LegendVienna Badass
|
Mann, ich werd' noch bekloppt! Das haut einfach nicht hin. Hab schon fast jede erdenkliche Variante ausprobiert. Nachdem ich dachte, daß es möglicherweise am MYSQL_NUM liegt (gibt ja angeblich nur numerische Indezes aus) , habe ich es mit MYSQL_ASSOC probiert. Geht auch nicht. Wie genau muß ich ein Array auslesen? Ich hab's genauso probiert wie auf php.net beschrieben, ohne Erfolg. Langsam wird das eine Prinzipsache hier. Ich befürchte, ich kann heute nacht nicht einschlafen, wenn ich nicht auf die Lösung komme. Trotzdem bin ich weiterhin dankbar für jeden Rat. Hier übrigens meine letzte Version: $result = mysql_query("select titel from dvd where id=(SELECT max(id) FROM dvd)"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf ("Aktuellster Film: %s", $row[0]); }
Bearbeitet von grOOvekill@ am 30.10.2002, 15:10
|
Maxx666
Kitemaniac
|
hast du die query schon ausgeführt und gesehen das was rauskommt?
|
grOOvekill@
LegendVienna Badass
|
Ja. Genau das, was ich brauche. Die innere Abfrage bekommt die id mit der größten zahl. Die äußere vergleicht die id's und zeigt automatisch den Titel des Filmes an, der diese id hat, also automatisch der letzte Eintrag. Hab's testhalber sogar im Access ausprobiert. Sogar dort hat's hingehauen.
|
watchout
Legendundead
|
Ja. Genau das, was ich brauche. Die innere Abfrage bekommt die id mit der größten zahl. Die äußere vergleicht die id's und zeigt automatisch den Titel des Filmes an, der diese id hat, also automatisch der letzte Eintrag. Hab's testhalber sogar im Access ausprobiert. Sogar dort hat's hingehauen. zeig mal mit echo die result-ressource an edit: oder besser mit print_r
Bearbeitet von watchout am 30.10.2002, 15:28
|
atrox
in fairy dust... I trust!
|
afiak werden subselects bei mysql erst ab version 4.1 unterstützt. versuch doch lieber die version mit ... ORDER BY id DESC LIMIT 1.
|
watchout
Legendundead
|
afiak werden subselects bei mysql erst ab version 4.1 unterstützt. versuch doch lieber die version mit ... ORDER BY id DESC LIMIT 1. korrekt: MySQL Server currently only supports nested queries of the form INSERT ... SELECT ... and REPLACE ... SELECT .... You can, however, use the function IN() in other contexts. Subselects are currently being implemented in the 4.1 development tree.
|
atrox
in fairy dust... I trust!
|
subselects> seit jahren überfällig bei mysql... ausserdem auf meiner wishlist: *) tree-walking *) constrains *) views *) unions man könnte sagen "dann nimm doch gleich oracle" - nur braucht das mindestens 32mb + 16mb pro database [oder irgendwie so - ist schon lang her dass ich mir das durchgelesen habe]
|
grOOvekill@
LegendVienna Badass
|
Verstehe, verstehe. Tja, da kann ich's mit einem Subselect lang versuchen. Man sollte halt vorher nachsehen, bevor man sich dumm und dämlich ärgert. Wie auch immer, ich hab es mittlerweile mit Watchout's Variante: select * from dvd order by id desc limit 1; geschafft, daß der letzte Eintrag angezeigt wird. Tausend Dank an alle, die sich Gedanken um mein Problem gemacht haben! Ich liebe Euch!!!
|