Zufalls-Abfrage mit MySQL

bluedisc

Aktives Mitglied
Thread Starter
Dabei seit
12.12.2009
Beiträge
371
Reaktionspunkte
9
Hallo MacUser!

Ich möchte ein PHP-Script schreiben, mit dem aus einer MySQL Tabelle zufällig Werte ausgelesen werden. Ich Habe das Bisher so gelöst:
PHP:
mysql_query("SELECT * FROM Tabelle ORDER BY RAND() LIMIT 1");

Das klappt ganz gut, aber jetzt möchte ich schon abgefragt Werte ausschließen. Ich man könnte dieses mit SESSION-Variablen lösen und eine Schleife machen, wenn ich dann aber alle Einträge durch habe, macht das Script dann die grätsche.

Gibt es nicht in MySQL eine elegantere Lösung?

Viele Grüße,
bluedisc
 
Hi,

mir faellt da schon eine SQL-only-Loesung ein, aber die finde ich sehr unkonventionell, wenn uerberhaupt legitim:

tblFoundEntries {ID, Wert}

Code:
INSERT INTO tblFoundEntries (wert) VALUES ((SELECT wert FROM Tabelle ORDER BY RAND() LIMIT 1) AND NOT EXISTS (SELECT wert FROM tblFoundEntries))

und Auslesen funktioniert so, dass du den letzten Eintrag aus tblFoundEntries holst.

Es geht auch, wenn du tblFoundEntries als unique definierst, dann ersparst du dir das ANT NOT EXISTS ... was wohl noch eleganter ist.
 
vielen dank für deine Antwort! Kannst du mir bitte noch erklären was da genau passiert? ich bin nicht so gut in MySQL :)
 
Es nimmt zufaellig einen Wert aus Tabelle und fuegt ihn tblFoundEntries, den es in tblFoundEntries noch net gibt.
 
was kommt bei bei (wert) rein?

ntries (wert) VAL
 
Hallo!

Ich konnte dein Script erst jetzt ausprobieren, und bekomme es nicht hin, es für meine Sachen umzubauen.

PHP:
$eintragen = mysql_query("INSERT INTO tblFoundEntries * VALUES ((SELECT * FROM Latein_neu ORDER BY RAND() LIMIT 1) AND NOT EXISTS (SELECT * FROM tblFoundEntries))") or die (mysql_error());
$eintrag = "SELECT * FORM tblFoundEntries LIMIT 1 DESC";
$ergebnis = mysql_query($eintrag);

Ich bekomme immer einen Syntax-error (MySQL). Was mache ich falsch?
 
Hi,

welcher Syntax-Error? ... Wie gesagt, es muss nich zwingend funktionierend, war nur eine spontane Idee. Ich persoenlich wuerds wohl eher mit PHP loesen.
 
ach so
 
Zurück
Oben Unten