Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Order by RAND ()
Duo
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 16.11.2010

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jaki błąd wyskakuje?
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
alegorn
post
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


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....

Ten post edytował alegorn 29.08.2012, 15:11:23
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 19:56