Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Rand z pobieraniem po jednym rekordzie z innej kategorii
tomekpl
post
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 5
Dołączył: 9.08.2008
Skąd: Szczecin

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


Witam, właśnie mam taki mały problem, kiedyś coś podobnego robiłem, ale wypadło mi z głowy.

Jak zrobić, żeby pobierać losowe wyniki z bazy, i w tym samym momencie, żeby kategoria produktu nie powtarzała się.
Czyli, żeby losowało np. 6 produktów, które maja inne kategorie.

id | produkt | kategoria |

Ten post edytował tomekpl 14.09.2011, 14:18:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
cezarszl
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 18.11.2009
Skąd: Cz-wa

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


Chyba tak:
  1.  
  2. SELECT DISTINCT id, produkt, kategoria FROM test GROUP BY kategoria ORDER BY RAND();
  3.  
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


@cezarszl Takie proste to to nie jest.

Jednym ze sposobów jest:
  1. SELECT * FROM (SELECT * FROM `produkty` ORDER BY RAND()) `posortowane_losowo` GROUP BY `kategoria`

Jednak wydajność takiego zapytania do największych nie należy. Niestety w tej chwili nic innego mi do głowy nie przychodzi.
Go to the top of the page
+Quote Post
cezarszl
post
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 18.11.2009
Skąd: Cz-wa

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


@up

Faktycznie. Nie zwróciłem uwagi, że wyświetla w losowej kolejności, ale tylko pierwsze produkty z danej kategorii.
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: 24.08.2025 - 01:36