Ir para conteúdo

POWERED BY:

Arquivado

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

JonasFloripa

[Resolvido] Consulta não ordena

Recommended Posts

Olá Galera.

Estou fazendo um sistema de controle de horas extras e estou com um problema de ordenar a consulta que estou fazendo.

Funciona assim:

Tenho uma tabela, CANDIDATOS, onde contem todos os candidatos a participar de uma determinada hora extra exposta. Tenho outra tabela, TOTALHORAS, que contem todas as horas que são feitas pelo funcionários.

 

Quando vou montar a escala, eu listo os candidatos e vou na tabela TOTALHORAS e busco a média de horas dos candidatos, para que eu possa escolher os de menor média.

 

O problema que não consigo ordenar essa minha média, segue abaixo meu código para alguém ver o que está de errado.

 

Agradeço a ajuda.

 

<?php
	$sqlhora2 ="select login from candidatos where idescala=$idescala";
	$resultadohora2 = $obj->executaQuery($sqlhora2);
	while ( $linhaH2 = mysql_fetch_array($resultadohora2) )
	{	
		$loginhora2 = $linhaH2['login'];
		//$query2 = "SELECT sum(hora2) as temphora2 FROM totalhoras where MONTH(data)='".$mes_atual."' and login='$loginhora2' order by temphora2 asc";
		$query2 = "select avg(hora2) as mediah2 from totalhoras where login='$loginhora2' AND data BETWEEN '2011-01-01' AND '2011-08-31' group by '".$loginhora2."' order by mediah2 asc";
		$resultado2 = $obj->executaQuery($query2);
		while ( $linha2 = mysql_fetch_array($resultado2) )
		{	
?>
<tr bgColor="#FFFFFF" onMouseOver="bgColor='#cccccc'" onMouseOut="bgColor='#FFFFFF'">
	<td width="40%" align="left" class="letra"><? echo $linhaH2['login']; ?></td>		
    <td width="30%" class="letra" align="center"><? echo $linha2['mediah2']; ?></td>
   </tr>
<?php
		}
	}	
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

$query2 = "select avg(hora2) as mediah2 from totalhoras where login='$loginhora2' AND data BETWEEN '2011-01-01' AND '2011-08-31' group by '".$loginhora2."' order by mediah2 asc";

essa sua query só vai te retornar uma linha, para que ordenar??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é esse LOOP dentro de LOOP.

 

por causa disso q você não consegue ordernar.

estude sobre INNER JOIN

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é esse LOOP dentro de LOOP.

 

por causa disso q você não consegue ordernar.

estude sobre INNER JOIN

 

Dae Bruno...

 

Valeu pela dica. Imaginei que não dava por dois LOOP, mas não sabia como resolver.

Mas agora tá tudo certinho, segue ai da forma q fiz.

 

Victor, minha consulta está dentro de uma loop, ai retorna mais de uma informação.

 

Abraço e valeu a ajuda

<?php
	$sqlhora2 ="select candidatos.login, avg(totalhoras.hora2) as mediah2 from candidatos inner join totalhoras where candidatos.idescala=$idescala and totalhoras.login = candidatos.login AND totalhoras.data BETWEEN '2011-01-01' AND '2011-08-31' group by totalhoras.login order by mediah2 asc";
	$resultadohora2 = $obj->executaQuery($sqlhora2);
	while ( $linhaH2 = mysql_fetch_array($resultadohora2) )
	{	
		  $login2 = $linhaH2['login'];
		  $mediaH2 = $linhaH2['mediah2'];
		  $media2 = number_format( $mediaH2, 2, ",", "." );
?>
<tr bgColor="#FFFFFF" onMouseOver="bgColor='#cccccc'" onMouseOut="bgColor='#FFFFFF'">
	<td width="62%" align="left" class="letra"><? echo $login2; ?></td>		
    <td width="38%" class="letra" align="center"><? echo $media2; ?></td>
   </tr>
<?php
	}	
?>

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.