Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Order by RAND ()
Forum PHP.pl > Forum > Przedszkole
Duo
Witam,
Używam do pobrania rekordów RAND (), jednak czasami wyskakuje błąd i skrypt musi pobrać dodatkowe 1 czy 2 rekordy. Jak mogę zrobić, żeby przy pobieraniu drugim nie były takie same rekordy jak przy pierwszym pobraniu ? Da się temu zaradzić ? Może jakiś inny sposób proponujecie ?
viking
Jaki błąd wyskakuje?
b4rt3kk
Zapisuj wylosowane wartości w tablicy i przy każdym kolejnym losowaniu sprawdzaj czy taki rekord został już wylosowany, jeśli tak, losuj ponownie.

  1. $wartosc = md_rand(0,10);
  2. if(!in_array($wartosc, $jakasTablica)) $jakasTablica[] = $wartosc;
alegorn
NIGDY nie używajorder by rand()
zapomnij ze taka opcja istnieje! nie ma jej i już. jest kilka gorszych nawyków w mysql, ale naprawdę już nie wiele!

jeśli musisz pobrać losowe wartości - to zastosuj inne rozwiązania.

masz tabelę ze spójnymi indeksami? wygeneruj tablicę z losowymi wartościami, w odpowiednim zakresie i dodaj do zapytania
  1. WHERE id IN(nasza,tablica)


nie masz spójnej tablicy - albo nie znasz dokładnego zakresu? wygeneruj większą liczbę potencjalnych id w php, o większym zakresie i dodaj do poprzedniego
  1. WHERE id IN(nasza,tablica) LIMIT 5


jest jeszcze kilka sposobów, i każdy chyba będzie lepszy od tego co chcesz zrobić.... no prawie każdy, wierzę że ktoś coś głupszego na bank wymyśli....

j.

edit - kolorowanie....
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-2025 Invision Power Services, Inc.