Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros bom dia.
Como eu poderia(se possível), realizar a consulta abaixo evitando consultas desnecessárias?
<?php
$pegatec = mysql_query("SELECT * FROM funcionarios");
while($pegaostec = mysql_fetch_array($pegatec)){
$pegaonome = $pegaostec['NomeAbrev'];
$pegatotal = mysql_query("SELECT * FROM servicos_rota WHERE data_agendada BETWEEN '$dataini%' AND '$datafim%' AND tecnico_responsavel= '$pegaonome' AND status_servico IS NOT NULL");
$CONTATOTAL = mysql_num_rows($pegatotal);
$CONTAOK = mysql_query("SELECT * FROM servicos_rota WHERE data_agendada BETWEEN '$dataini%' AND '$datafim%' AND tecnico_responsavel= '$pegaonome' AND status_servico = 'OK'");
$contaokres = mysql_num_rows($CONTAOK);
echo $contaokres;
echo $CONTATOTAL;
}
?>
O problema é que tenho que rodar todos os registros de uma tabela, e pegar em outra tabela quantos registros tem daquele id do laço atual e exibir, por ter muitos registros demora muito e causa lentidão no servidor.
Alguém conseguiria fazer algo mais prático?
Há um tempo atrás, o moderador @Beraldo realizou um artigo sobre o caso, você poderá visualizá-lo no link abaixo:
http://rberaldo.com.br/o-problema-do-n-mais-1/
Para não perder a segurança de prepared statements (que sugiro que você deva começar a utilizar), pode utilizar a solução do link abaixo:
http://forum.imasters.com.br/topic/472433-resolvidopdo-consulta-com-in/
mysql_* functions não são recomendadas a anos, foram depreciadas no PHP 5.5 e foram removidas no PHP 7. Pode escolher uma nova API (entre PDO e MySQLi) através do link abaixo:
http://php.net/manual/en/mysqlinfo.api.choosing.php