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ódigoSELECT 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?