Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif
Tenho uma tabela com vários registros de imóveis cadastrados por corretor. Para extrair os 10 corretores mais ativos, por exemplo, dou um select assim:
$select_list="SELECT corretor, COUNT(*) AS n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT 10"; Até aí beleza.
Eu gostaria de embaralhar esse resultado. Tenho certeza que já fiz algo assim e deu certo:
$select_list="(SELECT corretor, COUNT(*) AS n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT 10) ORDER BY RAND()";
Testei várias vezes e funcionou. Agora não está funcionando mais (não sei se houve mudança de versão do php ou do mysql.
De qualquer forma, você sabe como eu posso obter esse resultado?
Aí funciona o ORDER BY RAND(), mas o SELECT não pega os mais ativos. Isso porque o ORDER BY DESC LIMIT 10 deixa de funcionar. O objetivo desse comando é extrair, em um universo de centenas corretores, os dez mais ativos "...n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT 10".Aí, nesse universo restrito de epenas 10 corretores eu quero embaralhar, ou seja, é como se no 1º comando eu extraio e crio uma tabela com os 10 mais ativos e em um 2º comando eu extraio todos os registros ordenados de forma randômica.Aceito todas as sugestões...
Obrigado pela tentativa, mas não funfa assim.
ow pq oc num faz sua conexao normal e depois oc trata a array do resultado para organizar de forma randomica
assim:
PHP
[]$select_list="SELECT corretor, COUNT() AS n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT 10";
[*]
[*]$result_query = mysql_query($select_list, $dbh);
[*]
[*]$linhas = mysql_fetch_assoc($result_query);
[*]
[*]// **************************************** //
[*]
[*]$array_embaralhada = shuffle($linhas);
se der certo oc me falah pq eu nunca usei esse shuffle ae hehehehe
http://forum.imasters.com.br/public/style_emoticons/default/hug.gif
^^CAV
No lugar de:
PHP
[*]$linhas = mysql_fetch_assoc($result_query);
Deve ser:
PHP
[*]while ($rs = mysql_fetch_assoc($result_query))
[*]{
[*] $linhas[] = $rs;
[*]}
Pois a intenção é ter todas as infos. das linhas afetadas.
PHP
[*]while ($rs = mysql_fetch_assoc($result_query))
[*]{
[*] $linhas[] = $rs;
[*]}
[*]
é hehe malz rsrsrs
mas naum sei por q while pulah o primeiro registro encontrado, seria legal utilizar do while
PHP
[*]do
[*]{
[*] $linhas[] = $rs;
[*]} while ($rs = mysql_fetch_assoc($result_query));
[*]
http://forum.imasters.com.br/public/style_emoticons/default/hug.gif
^^CAV
Não deu certo. O sistema retornou a seguinte mensagem:"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/rcaceara/public_html/testes/teste.php on line 10"As linhas são:6 $select_list="(SELECT corretor, COUNT() AS n_imov FROM imoveis GROUP 7 BY corretor ORDER BY RAND(n_imov) DESC LIMIT 10)";8 mysql_query($select_list, $dbh);9 $result_list = mysql_query($select_list);10 while ($lista = mysql_fetch_array($result_list)){PS.: a conexão está ativa. Se colocar um select comum, como esse aí embaixo, funciona normalmente:$select_list="SELECT corretor, COUNT() AS n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT $qtde_cor