Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: order by RAND()
Forum PHP.pl > Forum > Bazy danych > MySQL
acztery
witam mam taki kod


  1. return $this->MysqlGetArray("SELECT * FROM movie WHERE act='1' ORDER by RAND() LIMIT 2");


chciałbym zmienić to tak aby zapytanie wylosowało 2 losowe z posród 10 najlepszech gdzie kolumna "r"

czyli losuje 10 najlepszych potem z nich 2....

chciałbym to w 1 zapytaniu


wczesniej miałem tak:


  1. $array_rand = $this->MysqlGetArray("SELECT * FROM movie WHERE act='1' ORDER by r DESC LIMIT 10");
  2. return array_rand($array_rand,2);


ale coś nie działa na tego typu tablicach te sortowanie.


PS

najlepiej by było jak by to 1 zapytaniem zrobić.
thek
Stwórz podzapytanie. Główne zapytanie bądzie z rand() i limit 2, a w jego wnętrzu jako FROM będzie podzapytanie losujące owe 10 najlepszych.
acztery
  1. function m_listHot ()
  2. {
  3. return $this->MysqlGetArray("SELECT * FROM (SELECT * FROM movie WHERE act='1' limit 10) WHERE act='1' ORDER by RAND() LIMIT 2");
  4. }


chyba nie tak bo nie dziala sad.gif
thek
To zapoznaj sie z błędami jakie generuje to zapytanie a Cie olśni, bo powinno jasno pisać czemu jest błąd. Powiem, że bilans jest na 0, bo masz w sumie jedną rzecz niepotrzebnie (choć w sumie nie przeszkadza jej obecność), a o jedną za mało smile.gif I chodzi głównie o to "jedno za mało", o czym komunikat błędu ładnie pisać powinien. Przynajmniej gdy ja podobne kiedyś pisałem, poinformowal mnie grzecznie o braku aliasu dla podzapytania.
acztery
as tmp dodałem i śmiga dzięki
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.