Ir para conteúdo

POWERED BY:

Arquivado

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

filipealvescruz

Comparar linhas de while diferente

Recommended Posts

Boa Noite pessoal ,

estou desenvolvendo um projeto, e preciso comparar o valor que existe entre duas query com loops (while)

preciso exibir as linhas que contem em uma e não contem na outra, por favor acho q estou errando algum detalhe .

 

segue o codigo :

 

<?php  
 
 
 
                    // Turmas com Conteudo Lançado
$sqlc = "SELECT * FROM $tabela_escola  WHERE turma >'0' AND conteudo = '$conteudo' AND bimestre ='$bimestre' AND resultado_bim > '0' GROUP BY turma ORDER BY turma ";
    $qr1c = mysql_query($sqlc)or die ("Erro ao Buscar "); 
         
while($nomec = mysql_fetch_array($qr1c)) 
 
if($nomec){
 
 
 
    $turmac = $nomec['turma'];  
 
 
                                  // Todas as Turmas do Bimestre 
$sql = "SELECT * FROM $tabela_escola  WHERE turma >'0' AND conteudo > '0' AND bimestre ='$bimestre' AND resultado_bim > '0' GROUP BY turma ORDER BY turma ";
   
    $qr = mysql_query($sql)or die ("Erro ao Buscar "); 
   
      while($nome = mysql_fetch_array($qr)) 
      
if($nome){$turmatd = $nome['turma'];    
              
$compara = array_diff( array($turmatd) , array($turmac) ) ;
   
          echo"<b> ";
echo"<font color='#FF0000'>";
echo $compara ;
echo"</font>";
echo"</b> ";
echo",";
 
 
}}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu código está muito estranho. O que você quer fazer exatamente?

 

Alguns problemas do seu código:

 

1. Tem um SELECT dentro de um loop. Você está matando todo o desempenho da aplicação. Leia: http://rberaldo.com.br/o-problema-do-n-mais-1/

 

2. Este trecho não faz sentido. Você está comparando arrays de apenas um índice:

 

$compara = array_diff( array($turmatd) , array($turmac) ) ;

 

3. funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar explicar melhor ...

preciso comparar os resultados das

whiles

 

A) while($nomec = mysql_fetch_array($qr1c))

 

B) while($nome = mysql_fetch_array($qr))

 

e exibir os valores que contém em uma e não contém na outra .

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução está antes disso.

Pare de pensar no while. Pense na consulta. O que quer comparar exatamente? Registros do banco? Então pense em como estruturar uma query que faça isso. Hoje você tem SELECT dentro de loop. É um absurdo isso. O desempenho vai ralo abaixo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá,

 

consegui realizar a função "UNION" que me mostra todos os dados entre as duas "Query"

 

porem não consigo fazer a comparação exibindo apenas os dados não existentes nas duas

consultas .

 

segue a UNION **FUNCIONANDO** :

 

$sqlcompara = "($A) UNION ($B)";
$qrcompara = mysql_query($sqlcompara)or die ("Erro ao Buscar ");
while($nomecompara = mysql_fetch_array($qrcompara))
if($nomecompara){
echo"<font color='#FF0000'>";
echo $nomecompara['turma'];
echo"</font>";
echo" | ";

 

 

não sei se esta conseguindo me entender...

Desde já obrigado pela dica de trabalhar com a Query , já mudou o meu ponto de vista .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até a parte do UNION acho que entendi. Você uniu dois SELECTs. Ok. Mas o que quer tirar desses resultados?

 

Talvez você esteja no caminho errado. Esse UNION vai juntar. Se quer subtrair, a saída pode ser outra.

Veja um exemplo: http://stackoverflow.com/questions/4585225/mysql-opposite-of-inner-join

Compartilhar este post


Link para o post
Compartilhar em outros sites
$A = " SELECT turma from $tabela_escola WHERE turma > '0' AND conteudo > '0' AND bimestre ='$bimestre' AND resultado_bim > '0' GROUP BY turma ORDER BY turma";


//$A Busca Todas as turmas que tiveram notas lançadas no bimestre.



$B = "SELECT turma from $tabela_escola WHERE turma > '0' AND conteudo = '$conteudo' AND bimestre ='$bimestre' AND resultado_bim > '0' GROUP BY turma ORDER BY turma ";


//$B Busca Apenas as turmas que receberam notas do $conteudo especificado .


// Dedução : preciso comparar a query $A com a $B e exibir apenas as turmas que NÂO receberam notas do $conteudo .

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.