![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 12 Dołączył: 23.11.2006 Skąd: WL Ostrzeżenie: (0%) ![]() ![]() |
Mam pewien problem z wylosowaniem wyników z bazy.
Próbuje wylosować 3 wyniki obok obecnie przeglądanego filmiku ale przy tym zapytaniu wyżej filmiki nonstop się powtarzają nie wiem jak to zrobić zmienna $video jest to id obecnie przeglądanego filmiku Z góry dziękuje za pomoc Dobra znalazłem już odpowiedź
Tylko że jest drugi problem z użyciem order by rand() przy kilku set tysiącach rekordów zapytanie może się wykonywać kilkanascie sekund tak wyczytałem. A to mnie nie ustawia ponieważ nie chcę zmulać bazy danych. Zna ktoś bardziej optymalne metody? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@CuteOne:
Gratulacje. Powielasz ORDER BY RAND(), a do tego dodajesz DISTINCT. Brakuje jeszcze jakiegoś iloczynu kartezjańskiego i będzie wypas. @szmerak: Zastosuj ideę ~bartek124, lepszego rozwiązania nie znajdziesz. Jeśli chcesz otrzymać np. 3 rekordy zupełnie losowe to pobierz łączną liczbę rekordów w tabeli, a następnie wylosuj 3 liczby z przedziału 0..n (albo n-1). Następnie wykonaj 3 zapytania w stylu podanym przez ~bartek124 łącząc je w jeden zbiór wyniku poprzez UNION. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 12:30 |