Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandro Diniz

INNER JOIN 3 Tabelas

Recommended Posts

estou com o seguinte erro na consulta, com 2 tabelas funciona quando insiro a terceira nao !

 

 

 

Set rs_acao = conexao.Execute("SELECT sgp_acoes.*, sgp_acoes_tipo.*, sgp_acoes_modulos.* FROM (sgp_acoes INNER JOIN sgp_acoes_tipo ON sgp_acoes.acao_tipo = sgp_acoes_tipo.cod_acao_tipo)INNER JOIN sgp_acoes_modulos ON sgp_acoes.acao_modulo = sgp_acoes_modulos.cod_acao_modulo WHERE cod_acao='"&acao&"'")

Microsoft OLE DB Provider for ODBC Drivers (0x80040E31)

[MySQL][ODBC 3.51 Driver][mysqld-3.23.51-nt]Column: 'cod_acao' in where clause is ambiguous

/sgi/db_acoes/lista.asp, line 29

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, nao eh mais facil você fazer sem inner join nenhum?

 

coloque tipo:

SQL = "SELECT * FROM tabelaum a, tabeladois b, tabelatres c WHERE a.id_tb1 = b.id_tb2 and a.id_tb1 = c.id_tb3 ORDER BY campo"Set RS = conexao.execute(SQL)

eu faço assim e sempre funciona

 

você separa as tabelas por letras e depois coloca a letra e um ponto antes do campo correspondente à tal tabela.. se a tabela for "a", o id dela vai ter que vir tipo a.id

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, nao eh mais facil você fazer sem inner join nenhum?coloque tipo:

SQL = "SELECT * FROM tabelaum a, tabeladois b, tabelatres c WHERE a.id_tb1 = b.id_tb2 and a.id_tb1 = c.id_tb3 ORDER BY campo"Set RS = conexao.execute(SQL)
eu faço assim e sempre funcionavocê separa as tabelas por letras e depois coloca a letra e um ponto antes do campo correspondente à tal tabela.. se a tabela for "a", o id dela vai ter que vir tipo a.id
Cesão, coloquei dessa maneira e nao deu,
Set rs_acao = conexao.Execute("SELECT * FROM sgp_acoes a, sgp_acoes_tipo b, sgp_acoes_modulos c WHERE a.acao_tipo = b.cod_acao_tipo and a.acao_modulo = c.cod_acao_modulo WHERE cod_acao='"&acao&"'")
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[MySQL][ODBC 3.51 Driver][mysqld-3.23.51-nt]You have an error in your SQL syntax near 'WHERE cod_acao='1'' at line 1/sgi/db_acoes/lista.asp, line 32

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara... esse cod_acao é numerico????se for... então tira as aspas simples!!!e sempre no inner join, costume a dar apelidos para as tabelas.. fica bem melhor...abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara... esse cod_acao é numerico????se for... então tira as aspas simples!!!e sempre no inner join, costume a dar apelidos para as tabelas.. fica bem melhor...abraço!

ASSIM FUNCIONA PERFEITAMENTE;
Set rs_acao = conexao.Execute("SELECT sgp_acoes.*, sgp_acoes_tipo.* FROM sgp_acoes INNER JOIN sgp_acoes_tipo ON sgp_acoes.acao_tipo = sgp_acoes_tipo.cod_acao_tipo WHERE cod_acao="&acao&"")
PRECISO INCLUIR ESSA SEGUNDA INSTRUÇÃO;
INNER JOIN sgp_acoes_modulos ON sgp_acoes.acao_modulo = sgp_acoes_modulos.cod_acao_modulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. vamos lá...

 

SELECT sgp_acoes.*, sgp_acoes_tipo.* FROM sgp_acoesINNER JOIN sgp_acoes_tipo ON sgp_acoes.acao_tipo = sgp_acoes_tipo.cod_acao_tipoINNER JOIN sgp_acoes_modulos ON sgp_acoes.cod_acao_modulo = sgp_acoes_modulos.cod_acao_moduloWHERE sgp_acoes.cod_acao="&acao&"
espero ter ajudado! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q o problema é q mais de uma tabela possui um campo com o nome cod_acao. entao no where ele nao sabe a qual tabela ele se refere. entao especifique o nome tabela. exemplo, se esse campo for da tabela sgp_acoes, faca assim:

Set rs_acao = conexao.Execute("SELECT sgp_acoes.*, sgp_acoes_tipo.*, sgp_acoes_modulos.* FROM (sgp_acoes INNER JOIN sgp_acoes_tipo ON sgp_acoes.acao_tipo = sgp_acoes_tipo.cod_acao_tipo)INNER JOIN sgp_acoes_modulos ON sgp_acoes.acao_modulo = sgp_acoes_modulos.cod_acao_modulo WHERE sgp_acoes.cod_acao='"&acao&"'")

Set rs_acao = conexao.Execute("SELECT * FROM sgp_acoes a, sgp_acoes_tipo b, sgp_acoes_modulos c WHERE a.acao_tipo = b.cod_acao_tipo and a.acao_modulo = c.cod_acao_modulo WHERE cod_acao='"&acao&"'")
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[MySQL][ODBC 3.51 Driver][mysqld-3.23.51-nt]You have an error in your SQL syntax near 'WHERE cod_acao='1'' at line 1/sgi/db_acoes/lista.asp, line 32
e o problema aqui é q você tem dois Wheres. troque o segundo por AND q deve funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.