zufällig 3 datensätze auslesen

mille

Erfahrenes Mitglied
ich will aus einer datenbank zufällig 3 datensätze auslesen...

also where check = x und LIMIT 3 is mir klar, mir gehts darum das 3 zufällig ausgewählte datensätze ausgelesen werden, kann mir einer weiterhelfen

ich wollte es über zufallszahlen machen (Aber da generiert mir mein code irgendwie immer die 3 gleichen, obwohl ich rand mit der zeit neu initialisiere)
problem ist dabei auch das ich dann erstma alles auslesen muss un djedem datensatz noch eine id zu weisen muss... (weil nicht alle ID's aus der db) auch bei dem check = x haben

Deshalb, frag ich ob mir jemand ein befehl geben kann der 3 datensätze ausliest die check = x haben und dies zufällig tut, sprich das es nicht immer die gleichen sind ;)....


danke

PS: jaaa ich hab auch brav aufn sponsor geklickt :D
 
was meinst Du die ganze Zeit mit check=x ??

Gibt mal ein sql statement beispiel, also select usw.
mit limit 3 bestimmt nicht, weil das heisst nur gib mir die ersten drei datensätze aus
 
Original geschrieben von methodus


SELECT * FROM tabelle WHERE ID=RANDOM(3)

wenn dann
SELECT * FROM tabelle WHERE ID=RAND(3)

aber rand(seend) gibt eine nummer zwischen 0 und 1 wieder! also hilft das nicht wirklich!

besser wäre es vielleicht mit php drei zufällige variablen zu generieren, zu checken das keine doppelt vorkommt und dann

SELECT * FROM tabelle WHERE ID=$rand1 OR ID=$rand2 OR ID=$rand3

Problem ist aber die ID spalte! Da diese vielleicht z.Z. noch fortlaufend ist, aber mit der zeit bestimmt nicht!
D.h. man müsste vorher checken ob wirklich drei werte zurückkommen, wenn nicht dann neue nummern generieren.
SELECT Count(*) FROM tabelle WHERE ID=$rand1 OR ID=$rand2 OR ID=$rand3
 
hab was gefunden, funktioniert normalerweise:

SELECT * FROM tabelle ORDER BY RAND() LIMIT 3

funktioniert definitv

gehört aber ins mysql-forum!!!
 
ich checks ma aus und dann geb ich ma rückmeldung, aber was ich mit check = x meine?...
ich habe bei nem quiz die richtigen datensätze (mit benutzerdaten) und er spalte check mit dem wert x versehen, damit aber keiner sich unzählige male versucht speicher ich einfach die namen und adressen in den tabellen.

sprich alle die in der spalte check den wert x haben, haben richtig geantwortet und nur die will ich auslesen, und so wie mir das der methodus geschrieben hat probier ichs ma....

nur ich nutze halt SELECT * FROM tabelle WHERE check = 'x' ORDER BY RAND() LIMIT 3

- ma guggn was rauskommt :)
 
gut, das klappt, nicht, selbst mit LIMIT 3 liest der das immer und immer wieder aus, sprich das hoert nich mehr auf, macht ja auch nichts, wenn zwar jemand noch was andres weiss, dann wär ich dankbar, andernfalls versuch ichs mit 3 zufallszahlen ...

belaste ich ebend den server n bissl - der muss dann schaun ob die zufalls zahl auch eine ID hat, ob diese ID richtig geantwortet hat, wenn nicht ne neue.

dazu brauch ich aber 3 verschiedene zufallszahlen mit rand(time()) kommt immer die gleiche zahl raus.... logisch wenn der immer vonna zeit ausgeht ;)

gibts noch ne andre moeglichkeit 3 verschiedene zufallszahlen zu generieren? oder hat jemand ne bessere idee 3 datensätze zufällig auszulesen bei den die spalte check den wert X enthält... oder halt 0 wenns besser gefällt ;).... das ja nich das ding


wäre echt dankbar :)
 
finde ich eigentlich sehr seltsam, da auf der seite on mysql bei rand klar und deutchlich so ein ausdruck steht!

order by rand() limit 1 für eine zufällige auswahl eines datensatzes

kannst du selbst nachlesen! (hab aber leider grad den url nich mehr)
 
Zurück