Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida com Select e Order By


Rodrigo Twister

Pergunta

Amigos, estou com uma dúvida que aparentemente é simples, porém, não estou conseguindo raciocinar. Para uma melhor visualização, o link do "problema" é este: http://www.agendao.net/calendario/calendar...12&ano=2010

Reparem que no dia 22, tem um compromisso chamado TESTE NOVO SIST. na cor roxa. Este compromisso está atrelado ao código do label (chamo assim as caixas coloridas) REUNIÃO e está aparecendo em RIO DE JANEIRO.

Eu preciso que esteja ordenado da seguinte forma:

RIO DE JANEIRO

todos os compromissos do rj

REUNIÃO

todos os compromissos de reunião

SÃO PAULO

todos os compromissos de sp

Existe uma tabela no banco chamada COMPROMISSOS e uma tabela chamada LABEL. No meu select eu faço um inner join porém, na hora de fazer o while que estou me enrolando, aí acabo fazendo 2 whiles, um pro LABEL e outro pros COMPROMISSOS.

Vai o código abaixo para melhor entendimento.

$sql   =   mysql_query("select *,date_format(hora_inicio,'%H:%m') as hora_inicio,date_format(hora_fim,'%H:%m') as hora_fim from compromissos inner join cores on cores.cod_label=compromissos.cod_label WHERE data = '".$date."' order by compromissos.cod_label,hora_inicio") 
                       or die("ERRO NO COMANDO SQL");
      $row   =  mysql_num_rows($sql);
      
      $sqlLabel   =   mysql_query("select * from cores inner join compromissos on compromissos.cod_label=cores.cod_label WHERE data = '".$date."' group by compromissos.cod_label") 
                       or die("ERRO NO COMANDO SQL");
      $rowLabel   =  mysql_num_rows($sqlLabel);
     
      if(mysql_num_rows($sql)){
      
      ?>
            <td width="180" align="right" valign="top" bgcolor="#FFFFFF" title="visualizar"><a href="../admin/add_compromisso.php" rel="gb_page_center[690, 300]" title="Agendão - Amil"><?=$d?></a>
            
            <?
            while ($regLabel=mysql_fetch_array($sqlLabel))
            {
                $bgcolor=$regLabel['bgcolor'];
                $label=$regLabel['label'];
           ?>
           
               <table width=100% border=0 cellspacing=0 cellpadding=0>
            <tr>
            <td bgcolor=<? echo $bgcolor; ?> height=16><b>&nbsp;<? echo $label; ?></b></td>
            </tr>
            <tr>
            <td height=5></td>
            </tr>
            </table>
            
            <?
            while ($reg=mysql_fetch_array($sql))
            {
                $cod_compromisso=$reg['cod_compromisso'];
                $titulo=$reg["titulo"];
                $cidade=$reg['cidade'];
                $bgcolor=$reg['bgcolor'];
                $cor=$reg['cor'];
                $label=$reg['label'];
                $hora_inicio=$reg['hora_inicio'];
                $hora_fim=$reg['hora_fim'];
                $estado=$reg['estado'];
           ?>
            
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td valign="top"><a href="evento.php?cod_compromisso=<? echo $cod_compromisso; ?>" rel="gb_page_center[690, 300]" title="Agendão - Amil" style="color:<? echo $cor; ?>">&nbsp;<? echo $hora_inicio; ?> - <? echo $hora_fim; ?> - <? echo $titulo; ?></a></td>
                
              </tr>
              <tr>
                <td height="5" colspan="2"></td>
              </tr>
            </table>
          <? } ?><? } ?>            </td>

Será que alguém me ajuda???

Grato

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Me parece que dividir em dois whiles é razoável. O seu problema é que a consulta dos compromissos tem passar para dentro do while do label e incluir o label como condição do where. Não testei mas seria algo assim:

<?php
$sqlLabel = mysql_query("
   select cores.label, cores.bgcolor
   from cores
   inner join compromissos on compromissos.cod_label=cores.cod_label
   WHERE data = '$date'
   group by cores.label, cores.bgcolor
   order by cores.label
   ")
   or die("ERRO NO COMANDO SQL");

if(mysql_num_rows($sqlLabel)){

?>
   <td width="180" align="right" valign="top" bgcolor="#FFFFFF" title="visualizar"><a href="../admin/add_compromisso.php" rel="gb_page_center[690, 300]" title="Agendão - Amil"><?=$d?></a>
   
   <?
   while ($regLabel=mysql_fetch_array($sqlLabel))
   {
       $bgcolor=$regLabel['bgcolor'];
       $label=$regLabel['label'];
  ?>

      <table width=100% border=0 cellspacing=0 cellpadding=0>
   <tr>
   <td bgcolor=<? echo $bgcolor; ?> height=16><b>&nbsp;<? echo $label; ?></b></td>
   </tr>
   <tr>
   <td height=5></td>
   </tr>
   </table>
   
   <?
   $sql = mysql_query("
      select *
         ,date_format(hora_inicio,'%H:%m') as hora_inicio
         ,date_format(hora_fim,'%H:%m') as hora_fim
      from compromissos
      inner join cores on cores.cod_label=compromissos.cod_label
      WHERE data = '$date' and cores.label = '$label'
      order by compromissos.cod_label,hora_inicio
      ")
      or die("ERRO NO COMANDO SQL");

   while ($reg=mysql_fetch_array($sql))
   {
       $cod_compromisso=$reg['cod_compromisso'];
       $titulo=$reg["titulo"];
       $cidade=$reg['cidade'];
       $bgcolor=$reg['bgcolor'];
       $cor=$reg['cor'];
       $label=$reg['label'];
       $hora_inicio=$reg['hora_inicio'];
       $hora_fim=$reg['hora_fim'];
       $estado=$reg['estado'];
  ?>
   
   <table width="100%" border="0" cellspacing="0" cellpadding="0">
     <tr>
       <td valign="top"><a href="evento.php?cod_compromisso=<? echo $cod_compromisso; ?>" rel="gb_page_center[690, 300]" title="Agendão - Amil" style="color:<? echo $cor; ?>">&nbsp;<? echo $hora_inicio; ?> - <? echo $hora_fim; ?> - <? echo $titulo; ?></a></td>
       
     </tr>
     <tr>
       <td height="5" colspan="2"></td>
     </tr>
   </table>
    <? } ?><? } ?>            </td>

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...