Ir para conteúdo
Fórum Script Brasil
  • 0

problema no resultado de consulta entre duas tabelas


hernandes73

Pergunta

Galera, já tentei de tudo e não encotro o problema do meu script que não retorna o resultado solicitado dos dados que encontram-se em duas tabelas. o script está abaixo. se algum colega puder ajudar aí fico muito grato....

<html>

<head>

<title>acessando dados de duas tabelas mysql</title>

</head>

<body>

<?php

// abre conexão

include "conecta.php";

//cria sentença sql

$sql = " SELECT efetivo.CodPst , efetivo.nomeguerra, tb_medidas.DATA, tb_medidas.PESO, tb_medidas.ALTURA, tb_medidas.IMC, tb_medidas.PA_SIST, tb_medidas.PA_DIAST ";

$sql = $sql . "FROM efetivo ";

$sql = $sql . "INNER JOIN tb_medidas ";

$sql = $sql . "ON tb_medidas.re_efet = efetivo.re_efet";

//carrega os registros selecionados

$resultado = mysql_query( $sql ) or die( mysql_error() ); /*1° coisa adicionamos or die para saber se tem algum erro na query*/

?>

<div align="center"><font face="Arial" size="3"><b>Medidas Físicas</b></font><br>

<br>

</div>

<?php

while( $linha = mysql_fetch_array( $resultado ) ) {

$CodPst = $linha["CodPst"];

$nomeguerra = $linha["nomeguerra"];

$DATA = $linha["DATA"];

$PESO = $linha["PESO"];

$ALTURA = $linha["ALTURA"];

$IMC = $linha["IMC"];

$PA_SIST = $linha["PA_SIST"];

$PA_DIAST = $linha["PA_DIAST"];

}

?>

<table border="1" cellpadding="3" cellspacing="0" width="965">

<tr><!--adicionamos a tag tr-->

<td width="135" valign="top"><?php echo $CodPst;?></td>

<td width="112" valign="top"><?php echo $nomeguerra;?></td>

<td width="131" valign="top"><?php echo $DATA;?></td>

<td width="131" valign="top"><?php echo $PESO;?></td>

<td width="159" valign="top"><?php echo $ALTURA;?></td>

<td width="103" valign="top"><?php echo $PA_SIST;?></td>

<td width="136" valign="top"><?php echo $PA_DIAST;?></td>

</tr>

</table><!-- removemos o fechamento da tag table de dentro do laço-->

<?php

mysql_free_result( $resultado ); //removemos a liberação da consulta de dentro do laço

//mysql_close($conecta ); //removemos o fechamento da conexao de dentro do laço

?>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Oi,hernandes73!

Galera, já tentei de tudo e não encotro o problema do meu script que não retorna o resultado solicitado dos dados que encontram-se em duas tabelas. o script está abaixo. se algum colega puder ajudar aí fico muito grato....
$sql = " SELECT efetivo.CodPst , efetivo.nomeguerra, tb_medidas.DATA, tb_medidas.PESO, tb_medidas.ALTURA, tb_medidas.IMC, tb_medidas.PA_SIST, tb_medidas.PA_DIAST ";
$sql = $sql . "FROM efetivo ";
$sql = $sql . "INNER JOIN tb_medidas ";
$sql = $sql . "ON tb_medidas.re_efet = efetivo.re_efet";

Você já testou se os dados estão nas duas tabelas (Consultou separadamente)?

Experimente trocar o INNER JOIN por LEFT JOIN para forçar que apenas um dos lados retorne a informação desejada.

Os atributos tb_medidas.re_efet e efetivo.re_efet são numéricos com mesmo tipo, tamanho e sinalização?

Se forem do tipo char o varchar verefique se foram escritos da mesma forma. (espaços, letras acentuadas, maiúsculas/minúsculas, etc).

Existem índicers para os atributos tb_medidas.re_efet e efetivo.re_efet?

Estas são algumas das perguntas que você deverá responder para achar a solução de seu problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Caro amigo Denis, em primeiro lugar obrigado por sua atenção....

conferi todos os campos das duas tabelas e estão certos....

Detalhe: se eu digito left join ele me retorna um registro da tabela efetivo;

se eu digito right join ele me retorna um registro com os campos desejados da tabela tb_medidas;

mas no inner join não retorna nada......

desde já muito grato pela sua atenção.....

Link para o comentário
Compartilhar em outros sites

  • 0
Caro amigo Denis, em primeiro lugar obrigado por sua atenção....

conferi todos os campos das duas tabelas e estão certos....

Detalhe: se eu digito left join ele me retorna um registro da tabela efetivo;

se eu digito right join ele me retorna um registro com os campos desejados da tabela tb_medidas;

mas no inner join não retorna nada......

Esta é nova pra mim.

Mais um teste.

Qual o engine de cada tabela? MyISAM, InnoDB, outro? Qual?

O atributo re_efet na tabela tb_medidas é índice primário. Existe índice para ele?

Se o engine das tabelas é MyISam você já verificou com o myisamchk se as tabelas estão consistentes?

Link para o comentário
Compartilhar em outros sites

  • 0
mais uma dúvida, me retornou apenas um registro. como faço para me retornar todos os registros das tabelas?

'hernandes73', retornou somente uma linha pois só existe um registro coincidente nas duas tabelas. Lembrando das aulas de conjunto da antiga 3a série primária, o INNER JOIN é a interseção dos conjuntos representados pelas tabelas efetivo e tb_medidas.

Para retornar A - B (sendo a o conjunto efetivo e B o conjunto tb_medidas) use LEFT JOIN;

Para retornar B - A use RIGHT JOIN.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...