Sa zicem ca ultimul id (adica MAX(ID)) este 250.
RAND() * 250 da numar cu virgula, daca RAND() < 1.
Folosim CEIL pentru a rotunji numarul si a sacapa de ,
Asta nu putea fi scrisa ca
SELECT * FROM produse AS a JOIN ( SELECT CEIL(RAND( )*( SELECT id FROM produse ORDER BY id DESC LIMIT 1 )) AS id) AS b WHERE a.id >= b.id and categorie='$categorie' and subcategorie='$subcategorie' LIMIT 15
?
Adica de ce MAX(id) din moment ce este index pe id?
Si varchar este poate avea maxim 255 caractere. de ce recomanzi char(255)? Spatiu risipit aiurea daca nu se folosesc toate caracterele.
Iar functia asta ia doar id-ul random (b.id) dupa care returneaza rezultatele comparate cu acel id (afiseaza produsele cu id mai mare sau egal decat id-ul random in limita a 15. de exemplu, daca sunt 3 ce respecta conditia asta, doar 3)




Răspunde cu citat