jruiz 0 Denunciar post Postado Junho 17, 2005 Pessoal, eu já havia postado essa pergunta no fórum php, mas, apesar dos esforços, não consegui resolver o problema e resolvi dar uma tentada com vocês do mysql. Lá vai: Eu tenho uma tabela com vários registros de imóveis administrados por vários corretores. Cada registro tem um campo "corretor" e vários outros campos de descrição do imóvel. Eu quero extrair os 10 corretores mais ativos. Para isso, eu dou um SELECT na tabela com um comando ORDER BY DESC LIMIT 10, assim: $select_list="SELECT corretor, COUNT(*) AS n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT 10 Só que após isso, eu quero apresentar esses 10 campeões em ordem variada, ou seja, entre essa turma não haverá classificação (a cada refresh é apresentada uma seqüência, que será apresentada em um COMBO BOX). Para isso, eu preciso usar o ORDER BY RAND(). Tentei: $select_list="(SELECT corretor, COUNT(*) AS n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT 10) ORDER BY RAND()"; Só que não está dando certo. O objetivo final, como falei acima, é fazer um combo. O código completo é: $qtde_cor="15";// se quiser incluir mais corretores, é só alterar aqui. $select_list="(SELECT corretor, COUNT(*) AS n_imov FROM imoveis GROUP BY corretor ORDER BY n_imov DESC LIMIT $qtde_cor) ORDER BY RAND()"; mysql_query($select_list, $dbh); $result_list = mysql_query($select_list); $n="1"; while ($lista = mysql_fetch_array($result_list)) { $login=$lista['corretor']; $seleciona="SELECT nome FROM corretores WHERE login ='$login'"; $select="SELECT id_usuario FROM corretores WHERE login ='$login'"; $resultado=mysql_query($seleciona, $dbh); $result=mysql_query($select, $dbh); $nome[$n]= mysql_result($resultado,"nome"); $id_usuario[$n]= mysql_result($result,"id_usuario"); $n++; }?><form name="agenda"><p align="center"><select name="corretor" size="1" onChange="gone(this.value)"><?$i="1";While ($i<($qtde_cor+1)){?><option value="<?echo $id_usuario[$i];?>"><?echo $nome[$i];?></option><? $i++;}?></select><script language="javascript"> function gone(valor){window.open('http://www.rcaceara.com.br/pop_corr.php?nome_lanc=<?=$nome_lanc;?>&empresa=<?=$empresa;?>&id_usuario='+valor,'agenda','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=250,height=400');}//--></script> </p></form> Aceito sugestões... Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Junho 18, 2005 Nesse teu caso aconselho criar um Array com os 10 mais ativos. Tendo o Array, você randomize ele. ;) http://www.php.net/shuffle http://www.php.net/array-rand Compartilhar este post Link para o post Compartilhar em outros sites
spencer 0 Denunciar post Postado Junho 18, 2005 Sua ordem está sendo feita por n_imov, mude para RAND(), afinal entre os 10 nao deve existir ordem... Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Junho 19, 2005 Olá Spencer, Mas o que me faz obter os 10 primeiros é o ORDER BY n_imov DESC LIMIT $var.Tentarei as soluções com ARRAY quando tiver o código pronto posto aqui, ok?Obrigado, Compartilhar este post Link para o post Compartilhar em outros sites