Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
}
}
?>o problema é esse LOOP dentro de LOOP.
por causa disso q você não consegue ordernar.
estude sobre INNER JOIN
>
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
}
?>
essa sua query só vai te retornar uma linha, para que ordenar??????