Halfar Postado Agosto 15, 2006 Denunciar Share Postado Agosto 15, 2006 Sempre tive a seguinte duvida:Veja a instrucao sql abaixo utilizando um inner join: Citar $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 paraambas as tabelas.Agora, se eu executar a instrucao abaixo: Citar $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 printaro campo Valor?Deu para entender? Link para o comentário Compartilhar em outros sites More sharing options...
0 gladiador Postado Agosto 15, 2006 Denunciar Share Postado Agosto 15, 2006 /* movendo para MySQL */ Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 15, 2006 Denunciar Share Postado Agosto 15, 2006 é, 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, valorse 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 More sharing options...
0 Halfar Postado Agosto 15, 2006 Autor Denunciar Share Postado Agosto 15, 2006 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 More sharing options...
0 Beraldo Postado Agosto 15, 2006 Denunciar Share Postado Agosto 15, 2006 mysql_fetch_row() gera a array com índices numéricos. ;)abraço Link para o comentário Compartilhar em outros sites More sharing options...
0 Halfar Postado Agosto 15, 2006 Autor Denunciar Share Postado Agosto 15, 2006 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_campo1Pag_campo2Pag_campo3e fazendo isto em todas as tabelas não teriamos o problema discutido neste tópico.. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Halfar
Sempre tive a seguinte duvida:
Veja a instrucao sql abaixo utilizando um inner join:
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:
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