tomekpl
14.09.2011, 14:12:57
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 |
cezarszl
14.09.2011, 15:15:39
Chyba tak:
SELECT DISTINCT id, produkt, kategoria FROM test GROUP BY kategoria ORDER BY RAND();
mortus
14.09.2011, 15:41:29
@cezarszl Takie proste to to nie jest.
Jednym ze sposobów jest:
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.
cezarszl
14.09.2011, 15:54:02
@up
Faktycznie. Nie zwróciłem uwagi, że wyświetla w losowej kolejności, ale tylko pierwsze produkty z danej kategorii.