$Q = $this->db->query('SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = "Front bottom"
AND p.status = "active"
ORDER BY RAND()
');
вы можете использовать RAND
функцию MySQL, чтобы сделать это, следует отметить, что она будет выполнять очень медленно на огромном наборе данных (~ около 10к). MySQL собирал случайное число для каждой строки таблицы, что могло бы привести к проблеме, если таблица огромна.
Более безопасный метод заключается в том, чтобы сделать SELECT count(*) as n FROM table
и выбрать случайное число и сделать запрос с LIMIT 1,n
для получения n-й строки. Это будет работать, если вам нужно всего 1, или вам не важно, чтобы результат был в том же порядке.
Если вам действительно нужен полный случайный набор, лучше сделать это на стороне сервера, на мой взгляд.