Zufalls Ausgabe

  • Guten Abend :)
    Ich hab eine Frage, ich möchte aus meiner Datenbank 8 Zufallsmitglieder ausgeben.
    Soweit sogut, aber ich weiß nicht wie 8 verschiedene ausgeführt werden, momentan wird nur einer angezeigt.

    PHP
    id = ".$anz."

    dient dazu, um eine Zufällige ID rauszusuchen, aber er nimmt halt nur eine.

  • Wie sinnvoll ORDER BY RAND() ist hängt stark von der Größe der Tabelle ab. Wenn da nur ein paar Hundert zeilen drin stehen ist es kein allzu großes Ding. Je mehr Zeilen eine Tabelle hat, desto sinnvoller kann es aber sein einen alternativen Weg zu gehen.
    Wenn du eine Tabelle mit 10000 Zeilen hast und darauf ein ORDER BY RAND() verwendest muss SQL erstmal 10000 random ids erstellen, was relativ kostspielig ist. Daraus muss dann die niedrigste ermittelt werden (bzw. in diesem Fall z.B. die 8 niedrigsten).
    Eine Alternative wird hier gezeigt: http://www.titov.net/2005/09/21/do-…ows-from-table/

    Es ist natürlich immer im Einzelfall abzuwägen ob die höhere Belastung durch ORDER BY RAND() ins Gewicht schlägt, bzw. sich überhaupt bemerkbar macht. Auf den meisten kleineren Seiten dürfte das kein Problem darstellen und die bequemste Lösung sein.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Was wäre die Alternative ?

    PHP
    $sql="SELECT COUNT(id) FROM tabelle";
    if ($res=mysql_query($sql)) {
       if ($res=mysql_fetch_assoc($res)) {
           $id=rand(0, $res);
           $sql="SELECT foo,bar,blub FROM tabelle WHERE id='".$id."'";
           $res=mysql_query($.....
       } else echo "Keine Daten!";
    } else echo "DB Fehler (".$sql.") : ".mysql_error();


    Ich denke, das dauert länger, oder nicht?
    EDIT: Ooops, sorry, hab den link überlesen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Das Script hat eine noch viel schlimmere Macke. Wer sagt, dass die Id's fortlaufend sind? Wer sagt, dass die Id's auch wirklich bei 1 anfangen?