jruiz 0 Denunciar post Postado Junho 17, 2005 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? Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Junho 17, 2005 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 Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Junho 17, 2005 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... Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Junho 17, 2005 Obrigado pela tentativa, mas não funfa assim. Compartilhar este post Link para o post Compartilhar em outros sites
Caveira 0 Denunciar post Postado Junho 19, 2005 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 Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Junho 19, 2005 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. Compartilhar este post Link para o post Compartilhar em outros sites
Caveira 0 Denunciar post Postado Junho 21, 2005 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 Compartilhar este post Link para o post Compartilhar em outros sites