Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
No SELECT abaixo, o campo max(src_reprograma.para) as max_para só retorna o valor maior se não for incluída condição na clausula where para o mesmo:
$sql3 = "SELECT ";
$sql3 .= "src_atividoc.numero as numero_atdc,";
$sql3 .= "src_atividoc.num_doc as num_doc_atdc,";
$sql3 .= "src_atividoc.num_ativ as num_ativ_atdc,";
$sql3 .= "src_atividoc.responsavel as responsavel_atdc,";
$sql3 .= "src_atividoc.prazo as prazo_atdc,";
$sql3 .= "src_atividoc.conclusao as conclusao_atdc,";
$sql3 .= "src_atividades.numero as numero_atividades,";
$sql3 .= "src_atividades.nome as nome_atividades,";
$sql3 .= "src_docs.numero as numero_docs,";
$sql3 .= "src_docs.num_ativ as num_ativ_docs,";
$sql3 .= "src_docs.documento as documento_docs,";
$sql3 .= "src_docs.assunto as assunto_docs,";
$sql3 .= "src_docs.responsavel as responsavel_docs,";
$sql3 .= "src_usuarios.numero as num_usu,";
$sql3 .= "src_usuarios.nome as nome_usu,";
$sql3 .= "src_usuarios.iniciais as iniciais_usu,";
$sql3 .= "src_reprograma.num_ativ as num_ativ_rep,";
$sql3 .= "max(src_reprograma.para) as max_para ";
$sql3 .= "FROM ";
$sql3 .= "(((src_atividoc LEFT JOIN src_atividades ON src_atividoc.num_ativ = src_atividades.numero) ";
$sql3 .= "LEFT JOIN src_docs ON src_docs.num_ativ=src_atividades.numero) ";
$sql3 .= "LEFT JOIN src_usuarios ON src_atividoc.responsavel=src_usuarios.numero) ";
$sql3 .= "LEFT JOIN src_reprograma ON src_atividoc.numero=src_reprograma.num_ativ ";
$sql3 .= "where src_atividoc.num_doc=".$num;
$sql3 .= " and case when src_reprograma.para>0 then src_reprograma.para else src_atividoc.prazo end between ".$_SESSION["xinicio"]." and ".$_SESSION["xfim"];}
$sql3 .= " group by src_atividoc.numero,src_reprograma.num_ativ order by src_atividades.nome";
Exemplo do problema:
src_atividoc.prazo = 01/01/2010 (prazo inicial da atividade)
src_reprograma.para = 01/02/2010 (primeira reprogramação)
src_reprograma.para = 01/03/2010 (segunda reprogramação)
src_reprograma.para = 01/04/2010 (terceira reprogramação)
Desejo que o maior valor do campo src_reprograma.para seja selecionado, porem, usando os dados do exemplo, quando a clausula where condiciona o campo src_reprograma.para entre 01/01/2010 e 01/03/2010, o retorno é 01/03/2010 e não 01/04/2010.
O que está errado na query ou teria outra maneira de construí-la?
Carregando comentários...