Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: RANDOM() w MySQL na podstawie wagi - jak?
Forum PHP.pl > Forum > Bazy danych > MySQL
fifjak
Mam tabelkę w postaci:

+----+-------+------------------+
| id | nazwa | liczba_wystapien |
+----+-------+------------------+
| 1 | Aaaa | 256987 |
| 2 | Bbbb | 12546 |
| 3 | Cccc | 1245 |
+----+-------+------------------+

Chcę wyciągnąć z tej tabeli losowy wiersz, ale w zależności od kolumny liczba_wystapien, tj. tak, żeby te wiersze, które mają wyższą liczbę wystąpień były zwracane częściej niż te z niższą liczbą wystąpień.

Jak to najprościej rozwiązać w MySQL?
darko
To albo losowo wyciągasz coś z bazy albo jednak według jakiegoś klucza (kryterium). To, co planujesz nie ma nic wspólnego z losowością algorytmów pseudolosowych. Musiałbyś dokładnie opisać, jaki ten współczynnik liczby wystąpień miałby mieć według Ciebie wpływ na pseudolosowość, którą zaplanowałeś?
trueblue
Zrób sobie tabelę z wagami, trzy kolumny: minimum, maksimum, mnoznik.
Np.:
0 1 1
2 8 10
9 40 100
41 150 1000

  1. SELECT t1.pole,t2.mnoznik*RAND() AS waga FROM tabela1 AS t1 JOIN multi AS t2 ON t1.liczba_wystapien>=t2.minimum AND t1.liczba_wystapien<=t2.maksimum ORDER BY waga DESC LIMIT 0,1
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.