Array
(
)

COMO NÃO REPETIR ID NO INNER JOIN SQL

Leandro Soares
   - 21 mar 2015


Citação:
galera estou construindo um sistema, mas quando vou listar os dados das tabelas do banco de dados, utilizando inner join, a listagem repete os dados, como fazer para não repetir os dados da primeira tabela. O banco de dados contem duas tabelas relacionadas.
Clique na imagem para abrir em uma nova janela.
#Código

<?php 
require 'conecta.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Listagem de correspondências</title>
 
 <link rel="stylesheet" href="index_files/css3menu0/style.css" type="text/css" /><style type="text/css">._css3m{display:none}</style>
<link href="estilotabelas.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">

function valida(){
	
	
	
	var cmb= document.getElementById('busca');
        if(cmb.options[cmb.selectedIndex].value == ''){
            alert('Informe uma opção de busca');
            document.getElementById('busca').focus();
			return false;
		}
		
		
		var inp=document.getElementById('parampesq');
		     if(inp.value==''){
	     alert('digite um texto para pesquisar');
            document.getElementById('busca').focus();
			return false;

		
}
return true;	   
}


</script>
</head>
<body style="background-color:#EBEBEB">

<ul id="css3menu0" class="topmenu">

  <li class="topfirst"><a href="cad.php" style="height:32px;line-height:32px;"> <img src="index_files/css3menu0/newspaper.png" alt=""/>Cadastro</a></li>

	<li class="topmenu"><a href="listacorrespondencias.php" style="height:32px;line-height:32px;"><img src="index_files/css3menu0/drawer2.png" alt=""/>Listar correspondências</a></li>

	<li class="toplast"><a href="#" style="height:32px;line-height:32px;"><img src="index_files/css3menu0/table21.png" alt=""/>Estatísticas</a></li>

</ul><p class="_css3m"><a href="http://css3menu.com/">html dropdown menu</a> by Css3Menu.com</p>

<!-- End css3menu.com BODY section -->

<h4 id="css3menu0">Correspondências cadastradas</h4> 
    <h4 align="right"> <a href  ="cad.php">voltar</a> | <a href  ="logout.php">sair</a></h4

>
<div id="formulario2">


  <form name="form2" method="post"  onsubmit="return valida(this)"action="pesquisa.php">
 <table width="675"  align="left" class="borda" cellpadding="0" cellspacing="0" border="0" background="#f8ac00" >

  <tr>
    <td width="59"><label >BUSCA </label></td>
    <td width="297" ><select name="busca" id="busca">
      <option value=""> </option>
      <option value="l">lacre</option>
      <option value="m">nº malote</option>
      <option value="s">data saida</option>
      <option value="e">encaminhado por</option>
      <option value="d">destinatario </option>
      <option value="r">data de recebimento</option>
      <option value="p">recebido por </option>
      
    </select></td>
    
    
    <td width="306" ><input type="text" name="parampesq"  id="parampesq" placeholder="insira sua pesquisa aqui"value=""/></td>
    <td width="442" colspan="2" align="center"> 
      <input type="submit" name="sbm_enviar" id="sbm_enviar" value="Buscar	" />
      <input type="reset" name="rst_limpar" id="rst_limpar" value="Limpar" /></td>
      </tr>
      </table>
  </form>
  

  <label name="formulario" >Listagem de guias </label>
  <table cellpadding="2">
    <tr>
      <th >Código</th>
      <th >lacre</th>
      <th >nº malote</th>
      <th >dt saida</th>
      <th >encaminhado por</th>
      <th >destinatario</th>
      <th >dt recebimento</th>
      <th >recebido por</th>
      <th> objeto </th>
      <th> destino </th>
      <th >ações</th>
    </tr>
    <?php
    $cor= '#ffd';
    $query= 'SELECT guia.id, guia.lacre, guia.lacre, guia.nmalote, guia.dtsaida, guia.encaminhadopor, guia.destinatario,guia.dtrecebimento, conteudo.objeto, conteudo.destino FROM guia INNER JOIN conteudo ON (conteudo.id_guia=guia.id)';



    $result= mysql_query($query, $conexao);
    while($dados= mysql_fetch_object($result)){
        $cor= $cor == '#ffd' ? '#ddb' : '#ffd';
        echo "<tr style=\"background-color: {$cor}\">
                  <td>{$dados->id}</td>
				  <td>{$dados->lacre}</td>
				  <td>{$dados->nmalote}</td>
                   <td>" . implode('/', array_reverse(explode('-', $dados->dtsaida))) . "</td>
                  <td>{$dados->encaminhadopor}</td>
				  <td>{$dados->destinatario}</td>
                  <td>" . implode('/', array_reverse(explode('-', $dados->dtrecebimento))) . "</td> 
				  <td>{$dados->recebidopor}</td>
				  <td>{$dados->objeto}</td>	
				  <td>{$dados->destino}</td>
				   <td><a href=\"altera.php?id={$dados->id}\">Alterar</a>	</td>

    
   
              </tr>";
		    
			 
  
    }
    ?>
  </table>
</div>
</body>
</html>

Diego Segismundo
   - 31 mar 2015

Bom dia!

Poste seu join para analisarmos.

Thiago Santana
   - 31 mar 2015

Utilize o distinct no seu select

Alan Mario
   - 31 mar 2015

PHP com sql server?

Marisiana
   - 31 mar 2015

Leandro, pelo que entendi, você precisa incluir o GROUP BY para evitar essas repetições. Veja se o exemplo atende:
#Código

SELECT guia.id,
        guia.lacre,
        guia.nmalote, 
        guia.dtsaida,
        guia.encaminhadopor,
        guia.destinatario,
        guia.dtrecebimento,
        conteudo.objeto,
        conteudo.destino 
FROM guia 
INNER JOIN conteudo 
ON (conteudo.id_guia = guia.id)
GROUP BY guia.id,
        guia.lacre,
        guia.nmalote, 
        guia.dtsaida,
        guia.encaminhadopor,
        guia.destinatario,
        guia.dtrecebimento,
        conteudo.objeto,
        conteudo.destino 
ORDER BY guia.id 

Marisiana
   - 02 abr 2015

Leandro, o exemplo que passei resolve o problema?