O MySQL possui uma função rand() que usada junto com order by pode gerar resultados bem interessantes.
Se você tem um site de ecommerce ou de notÃcias, ou mesmo um blog. Já deve ter desejado mostrar alguns links de outros artigos ou produtos relacionados na página para o usuário.
E é justamente o rand que proporciona um resultado como este.
Um exemplo bem básico seria:
SELECT * FROM nome_da_tabela ORDER BY RAND()
Desta forma ele recupera todos os registros desta tabela, mas com os resultados todos fora de qualquer ordem.
Para trazer um número reduzido de resultados, digamos 5 itens aleatórios, farÃamos:
SELECT * FROM nome_da_tabela ORDER BY RAND() LIMIT 5
Veja que fica tudo igual, apenas foi adicionado o comando LIMIT, veja mais sobre LIMIT no meu post: usando o atributo limit.
É possivel adicionar uma cláusura where para restringir os resultados por determinada categoria. Suponha que você tenha um site que venda motos, carros, caminhões, ônibus, tratores…e por ai vai.
Se o usuário esta vistando um item moto, você não quer mostrar 5 itens aleatórios que sejam carros, ônibus, caminhões, etc. Você quer 5 outras motos aleatórias. Então faria:
SELECT * FROM nome_da_tabela WHERE nome_da_categoria = 'moto' ORDER BY RAND() LIMIT 5
Acredito que tenha ficado bem claro o uso do rand() junto com order by. Se quizer saber um pouco mais sobre order by, veja meu post entendendo o order by.
Sucesso!
Loading...