Eike: Order by rand() ergbit gleiche treffer ?

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. 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 ?

      1. 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

      2. 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

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
      3. 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

  2. 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

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.