Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jruiz

order by rand()

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.