Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+MySQL] Losowe rekordy z tabeli
Forum PHP.pl > Forum > PHP
dopelganger
cześć
mam tabele aktualności , w jaki sposób wyświetlić losowo 3 najnowsze newsy?

pomógłby mi ktoś przerobić?
  1. $sql = $db->query("SELECT * FROM tabela ORDER BY RAND() LIMIT 3");
mstraczkowski
Według mnie to zapytanie jest prawidłowe, powinno ci one zwrócić 3 losowe rekordy z tabeli.
dopelganger
Cytat(mstraczkowski @ 30.11.2013, 13:04:04 ) *
Według mnie to zapytanie jest prawidłowe, powinno ci one zwrócić 3 losowe rekordy z tabeli.


wyświetli 3 losowe z całej tabeli ale nie najnowsze wg. daty dodania newsa smile.gif - a o to mi chodzi (tylko 3 najnowsze newsy - losowo)
mstraczkowski
Możesz spróbować wykonać takie zapytanie:

  1. SELECT * FROM
  2. (
  3. SELECT * FROM tabela ORDER BY RAND() LIMIT 3
  4. ) wyniki
  5. ORDER BY `data_dodania` DESC
dopelganger
Cytat(mstraczkowski @ 30.11.2013, 13:12:12 ) *
Możesz spróbować wykonać takie zapytanie:

  1. SELECT * FROM
  2. (
  3. SELECT * FROM tabela ORDER BY RAND() LIMIT 3
  4. ) wyniki
  5. ORDER BY `data_dodania` DESC


nic mi nie wyświetla
mstraczkowski
Chwilka, chcesz wybrać losowo 3 najnowsze newsy ?
Czyli rozumiem, że zdajesz sobie sprawę z tego, że otrzymasz zawsze te same 3 newsy tylko w losowej kolejności ?

Takie zapytanie wybierze 3 najnowsze newsy, następnie te 3 posortuje losowo.
Moim zdaniem nie ma innego rozwiązania na twoje zadanie.

  1. SELECT * FROM
  2. (
  3. SELECT * FROM table1 ORDER BY `date` DESC LIMIT 3
  4. ) T1
  5. ORDER BY RAND()
dopelganger
Cytat(mstraczkowski @ 30.11.2013, 13:25:55 ) *
Chwilka, chcesz wybrać losowo 3 najnowsze newsy ?
Czyli rozumiem, że zdajesz sobie sprawę z tego, że otrzymasz zawsze te same 3 newsy tylko w losowej kolejności ?

  1. SELECT * FROM
  2. (
  3. SELECT * FROM table1 ORDER BY `date` DESC LIMIT 3
  4. ) T1
  5. ORDER BY RAND()


tak smile.gif
a to wyżej nadal nie chula...
pytam na forum, bo wydawało mi się to proste do zrealizowania na pierwszą myśl, a tu taka niespodzianka biggrin.gif nie mogę sobie z tym poradzić :/
mstraczkowski
Zapytanie, które podałem jako ostatnie, musi zadziałać prawidłowo, sprawdź czy na pewno dobrze podałeś nazwy kolumn, tabeli.
Podam jeszcze raz to samo zapytanie, ale w zapisie w jednej linii

  1. SELECT * FROM (SELECT * FROM table1 ORDER BY `date` DESC LIMIT 3) T1 ORDER BY RAND()

Dodatkowo zaznaczam, że używanie RAND(), nie jest najlepszym rozwiązaniem jeżeli chodzi o wydajność.
dopelganger
Cytat(mstraczkowski @ 30.11.2013, 13:30:04 ) *
Zapytanie, które podałem jako ostatnie, musi zadziałać prawidłowo, sprawdź czy na pewno dobrze podałeś nazwy kolumn, tabeli.
Podam jeszcze raz to samo zapytanie, ale w zapisie w jednej linii

  1. SELECT * FROM (SELECT * FROM table1 ORDER BY `date` DESC LIMIT 3) T1 ORDER BY RAND()

Dodatkowo zaznaczam, że używanie RAND(), nie jest najlepszym rozwiązaniem jeżeli chodzi o wydajność.


dziękuje Ci bardzo, działa
Pyton_000
SELECT ... ORDER BY ... LIMIT 3;
A potem w PHP shuffle
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.