MYSQL: Datensatz zufällig nach relativer Häufigkeit abfragen

Katzehuhn

Erfahrenes Mitglied
Ich hab eine Tabelle in der ein Feld eine Zahl zwischen 1 und 100 zugewiesen hat.
Diese Zahl gibt an, wie häufig, relativ zur Gesamtsumme(aus bestimmten Bedingungen ergebend,count()) dieses Objekt vorkommt.
Bsp:
Datensatz1: 72
Datensatz2: 2
Datensatz3: 10
Summe: 84;

Generiere zufällig Zahl: 21 -> ergibt Datensatz1, 74 -> Datensatz 2, usw

Ist es nun in MYSQL möglich mir einen dieser Datensätze nach prozentueller Häufigkeit bezogen auf seinen Anteil an der Summe zufällig abfragen zu lassen? Mysql muss ja sowieso erstmal alle möglichen raussuchen. Kann man da irgend wie machn, das halt nach der internen Ordnung jeder Datensatz eine Art Range erhält?
In dem Fall D1:0 - 71;D2:72-73;D3:74-84
Ansonsten müsste ich das per Programmiersprache abwickeln?
Danke für eure antworten
 
Könntest du bitte nochmal erklären, was deine Frage ist?
Warum ist 21 = D1?
Warum ist 74 = D2?

Natürlich kannst du mit Mysql verschieden sortieren.
Aber ich verstehe derzeit weder, wonach noch warum du sortieren willst.
 
Generiere zufällig Zahl: 21 -> ergibt Datensatz1, 74 -> Datensatz 2, usw

Die zufällige Zahl ist ein Wert zwischen 1 und der Summe aller beinhaltenden Zahlen.
Würde jetzt bei obrigen Beispiel 21 gewürfelt, sollte er mir den Datensatz1 rausholen, da dieser (nach jetzt von mir ausgedachten Methode) zwischen 0 und 71 ist(D1 hat den Wert 72 als Eigenschaft stehen). Denke aber das lässt sich mit Mysql nicht bewerkstelligen, oder vl fällt einem was ein^^ danke jedenfalls
 
Prinzipiell wäre das schon möglich,
du müssest nur mal dein Datenmodell überarbeiten.

Notwendig wären von-bis -Bereiche, zwischen die dein Wert fallen kann.
Es ist ja noch nicht mal klar, in welcher Reihenfolge denn nun tatsächlich die Verteilung existiert.

Könnte ja auch
0-2 -> D2
3-73 -> D1
usw sein.

Und nein - in einer Datenbank gibt es kein "von oben nach unten" :-)
 
Die Reihenfolge wäre bei zufälliger Auswahl egal, es kommt nur auf den relativen Anteil der Zahl an der Gesamtsumme an. Die von - bis Werte per Hand zu "generieren", kommt dabei leider nicht in Frage, da die Ausgabe von mehreren Bedingungen abhängt und somit dynamisch ist.
 
ja, aber dass die 21 in die Gruppe 0 bis 71
und nicht in die Gruppe 2 bis 73 gehört, dass allein deine Definition.
Die Datenbank weiß darüber nichts - zumindest hast du darüber nichts geschrieben.
 
Hi,

also mir fehlt dazu (genauso wie vermutlich shutdown) eine Regel, bzw. Formel, nach der das berechnet werden soll. Wenn Du uns die liefern kannst, können wir das vielleicht auch in ein SQL-Statement übersetzen. ;)

LG
 
Zurück