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

Inner Join - Duvida


Halfar

Pergunta

Sempre tive a seguinte duvida:

Veja a instrucao sql abaixo utilizando um inner join:

$sql = "Select * from (Comissionados inner join Pagamentos on ";

$sql = $sql . " Comissionados.CodigoUsuario = Pagamentos.CodigoUsuario)";

$sql = $sql . " where Comissionados.CodigoUsuario = '".$xCodigoUsuario."'";

$Res = mysql_db_query("$BaseDados", "$sql", $conex) or die ("Erro " . mysql_error());

Agora digamos que em ambas as tabelas eu tenha um campo chamado Valor, é o mesmo nome de campo para

ambas as tabelas.

Agora, se eu executar a instrucao abaixo:

$valor = mysql_fetch_array($Res);

echo $valor["Valor'];

Então, pergunto, se o campo valor existe em ambas as tabelas com o mesmo nome, qual tabela será utilizada para printar

o campo Valor?

Deu para entender?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

é, isso também foi problema pra mim, mas usando o sql acho que ele pega o primeiro que tiver na consulta sql. bom, não conheco php, mas se tiver como pegar um campo pelo numero dele na consulta em vez do nome, talvez isso seja melhor pra você.

exemplo, se a consulta ficar nessa order:

campo1, campo2, valor, campo3, valor

se você quiser pegar o primeiro campo valor, você faria assim:

echo $valor[2];
pra pegar o segundo, faria assim:
echo $valor[4];
como não conheco php, não sei se funciona. se não, a unica solucao que vejo pra isso, é você dar um alias para o campo da hora do select. exemplo:
$sql = "Select Comissionados.Campo1, Comissionados.Campo2, Pagamentos.Valor AS ESSEEOVALORQUEEUQUERO, pagamentos.Campo3 from (Comissionados inner join Pagamentos on ";
$sql = $sql . " Comissionados.CodigoUsuario = Pagamentos.CodigoUsuario)";
$sql = $sql . " where Comissionados.CodigoUsuario = '".$xCodigoUsuario."'";
$Res = mysql_db_query("$BaseDados", "$sql", $conex) or die ("Erro " . mysql_error());[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

Ola,

Realmente utilizar o Alias me parece uma boa solucao.

Dei uma olhada em um livro que possuo, um livro bem simples, mas encontrei o seguinte sobre mysql_fetch_array. Diz o autor:

"Se dois ou mais campos no resultado tem o mesmo nome, o último campo levará precedência. Para ter acesso a outro campo do mesmo nome, voce deve utilizar um índice númerico da coluna ou fazer um psdeudômino (Aliás) para o campo."

Então me parece o uso do aliás muito mais prático. Creio que o indice numero dificulta, alias nem mesmo sei como fazer isto.

Muito bem. .grato pela ajuda..

Link para o comentário
Compartilhar em outros sites

  • 0

Dando continuidade a resposta, apenas para acrescentar mais uma sugestão, se voce tiver uma tabela com muitos campos, dá muito trabalho ficar especificando obrigatoriamente todos os nomes dos campos (Select Comissionados.Campo1, Comissionados.Campo2,etc...).

Então já que existe esta dificuldade, talvez seja interessante especificar nomes nos campos das tabelas com uma identificação do nome na tabela antes do campo, assim:

Digamos que temos a tabela chamada Pagamentos. Os nomes dos campos ficaria assim então:

Pag_campo1

Pag_campo2

Pag_campo3

e fazendo isto em todas as tabelas não teriamos o problema discutido neste tópico..

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...