Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP+MySQL] Losowe rekordy z tabeli
dopelganger
post
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


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");


Ten post edytował dopelganger 30.11.2013, 13:02:48
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #2





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


Według mnie to zapytanie jest prawidłowe, powinno ci one zwrócić 3 losowe rekordy z tabeli.


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
dopelganger
post
Post #3





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


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)

Ten post edytował dopelganger 30.11.2013, 13:06:53
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #4





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


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


Ten post edytował mstraczkowski 30.11.2013, 13:12:34


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
dopelganger
post
Post #5





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


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
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


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()


Ten post edytował mstraczkowski 30.11.2013, 13:27:35


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
dopelganger
post
Post #7





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


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ć :/

Ten post edytował dopelganger 30.11.2013, 13:28:59
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #8





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


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

Ten post edytował mstraczkowski 30.11.2013, 13:34:41


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
dopelganger
post
Post #9





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


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
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


SELECT ... ORDER BY ... LIMIT 3;
A potem w PHP shuffle
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 17:52