Order by rand() ergbit gleiche treffer ?
Eike
- php
Hi Ihr,
ich hab da mal ne Frage. Und zwar lasse ich mir via Select eine gewisse Anzahl (in dem Fall zwei) zufällig ausgewählte Einträge aus einer Datenbank liefern, so:
SELECT * FROM meinedb WHERE artikel!='$jetztartikel' AND kategorie='1' ORDER BY rand() LIMIT 2
Nun zu meiner Frage, kann es sein, dass zufällig auch der gleich artikel zweimal ausgesucht wird ? Mir persönlich ist dies noch nciht aufgefallen, die Datenbank umfasst knapp 20.000 Artikel, aber einige User meinten dass es vorkommt das der gleich Artikel angezeigt wird vom Script ? Also ist dies möglich, oder ist dies ausgeschlossen ??
danke und nen schönen Gruß
Eike
Hello,
Nun zu meiner Frage, kann es sein, dass zufällig auch der gleich artikel zweimal ausgesucht wird ?
War es der gleiche oder derselbe Artikel? *gg*
Gehört habe ich das auch schon öfter, selber hinbekommen aber noch nie.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom,
ja exakt der selbe soll es gewessen, aber bsp.: 1. zufällig ID 10000 und zweiter auch ID 10000
mhm... Problem bei mir ist, dass darf eigentlich auch keinenfall passieren, dat heißt ich müsste zuerst einen artikel zufällig ermittln und dann auschließen, dass der artikel der zuerst zuällig ermittelt wurde beim zweiten mal wieder ausgewählt wird...
oder wüßtest du eine andere methode ?
Moin Eike,
ja exakt der selbe soll es gewessen, aber bsp.: 1. zufällig ID 10000
oder wüßtest du eine andere methode ?
Ein bischen kompliziert aber über PHP mit srand()
Zunächst also die Anzahl der Datensätze in der DB ermitteln und dann die Zahl über srand () zufällig auswählen.
http://de.php.net/manual/de/function.srand.php
Hello,
mhm... Problem bei mir ist, dass darf eigentlich auch keinenfall passieren, dat heißt ich müsste zuerst einen artikel zufällig ermittln und dann auschließen, dass der artikel der zuerst zuällig ermittelt wurde beim zweiten mal wieder ausgewählt wird...
Das ist kein Problem, sondern nur eien Fleißaufgabe.
Große Tabelle - Sperrtabelle
Datensatz mit random auswählen
Ausgewählten ausgeben
Ausgegebenen verarbeiten und in Sperrtabelle eintragen
Gelegentlich die Sperrtabelle wieder löschen.
bzw. diejenigen wieder löschen, die mehr bezahlt haben.
Dieses Verfahren garantiert Prozentuale Einblendung.
Meine Kontonummer maile ich dir ;-))
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
ja exakt der selbe soll es gewessen, aber bsp.: 1. zufällig ID 10000 und zweiter auch ID 10000
Das kann eigendlich nur dann vorkommen wenn die Suche nur auf diesen einen Artikel passt, wobei auch ich das bei Deiner Form der Abfrage für ausgeschlossen halte. Nur keiner ist unfehlbar, immer mal was übersehen kann.
mhm... Problem bei mir ist, dass darf eigentlich auch keinenfall passieren, dat heißt ich müsste zuerst einen artikel zufällig ermittln und dann auschließen, dass der artikel der zuerst zuällig ermittelt wurde beim zweiten mal wieder ausgewählt wird...
oder wüßtest du eine andere methode ?
Das beste wäre wohl, bei der Ausgabe noch die ID , die ja eindeutig ist zu prüfen um doppeltausgabe zu verhindern.
mfg
Das Schmunzelmonster
Hi,
SELECT * FROM meinedb WHERE artikel!='$jetztartikel' AND kategorie='1' ORDER BY rand() LIMIT 2
Nun zu meiner Frage, kann es sein, dass zufällig auch der gleich artikel zweimal ausgesucht wird ? Mir persönlich ist dies noch nciht aufgefallen, die Datenbank umfasst knapp 20.000 Artikel, aber einige User meinten dass es vorkommt das der gleich Artikel angezeigt wird vom Script ? Also ist dies möglich, oder ist dies ausgeschlossen ??
Bei obigem SQL-Befehl sollte das ausgeschlossen sein.
Denn es werden ja nicht zufällig Datensätze ausgewählt.
Es werden alle Datensätze (außer jetztartikel) der Kategorie 1 ausgewählt. Dann wird "sortiert" (mit zufälliger Reihenfolge). Und dann werden vom Ergebnis nur 2 Datensätze benutzt.
Ich wüßte nicht, wo hier eine Verdoppelung auftreten sollte.
Außer es ist ein doppelter Eintrag in der Datenbank vorhanden.
cu,
Andreas