Philipp Hasenfratz: Zufällige Abfrage!

Beitrag lesen

Halihallo Robert

Ich habe eine Datenbank voller Datensätze. Jetzt will ich aus der einen Datensatz per Zufall abrufen.

Welche Datenbank? - MySQL? MSSQL? ...

Habe die Funktion rand() gesehen, komme aber nicht wirklich klar damit.

Aber in der richtigen Ecke bist du schon mal gelandet.

wie baue ich das am besten in ein select ein, dass ich genau einen datensatz erhalte.

if (MySQL) {
   Direktive LIMIT verfügbar
} else {
   Evtl. TOP verfügbar o. ä.
}

mit LIMIT bzw. TOP kannst du einen Record auswählen, über RAND kannst du einen zufälligen
Index auswählen.

zusätzliche schwierigkeit: diesen datensatz muss es auch geben (also nicht nach id arbeiten, da primärschlüssel fehlen kann: 1,2,3,5,8, ...), und in der where-klausel muss visible=1 vorkomme.

Das wird schon wesentlich schwieriger. Mit LIMIT und einem gültigen Index erhälst du
zwar _immer_ einen Record, aber über RAND ohne Subqueries hast du keine Möglichkeit; den
grösstmöglichen Index zu definieren. Kannst du auf eine serverseitige Programmiersprache
ausweichen?

Viele Grüsse

Philipp