Ir para conteúdo

POWERED BY:

Arquivado

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

daniloprates

2 INNER JOIN de uma vez

Recommended Posts

Preciso abrir alguns dados. Tenho uma tabela principal (LINKS) e duas de relacionamentos (LINKS2 e CATEGORIAS).

 

Vou colocar como tentei fazer, mas não deu certo:

 

SQL = "SELECT top 3 * FROM "SQL = SQL & "categorias inner join links ON categorias.id = links.idcategoria "SQL = SQL & "and links2 inner join links ON links2.id = links.n1 "

É possível fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim mas nao assim como voce fezo JOIN so permite fazer uma "uniao" de duas tabelasso que o resultado dele é como se fosse outra tabela entao voce faz o join deste resultado com a terceira tabela e vai funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta o seguinte:

 

SELECT TOP 3 * FROM	Categorias			INNER JOIN Links  ON Categorias.id = Links.IDCategoria			INNER JOIN Links2 ON Links.N1 = Links2.ID

Não testeis, mas deve funcionar.

 

Abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roney, não rolou...

 

SQL = "SELECT top 3 * FROM categorias "	SQL = SQL & "INNER JOIN Links ON Categorias.id = Links.IDCategoria "	SQL = SQL & "INNER JOIN Links2 ON Links.N1 = Links2.ID "

Será que tem jeito???

 

 

marioufpa, entendi mais ou menos o q você falou, mas como vou chamar o resultado do 1º relacionamento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro mesmo...

 

SQL = "SELECT top 3 * FROM categorias"	SQL = SQL & "INNER JOIN Links ON Categorias.id = Links.IDCategoria "	SQL = SQL & "INNER JOIN Links2 ON Links.N1 = Links2.ID "

Deu o erro:

Tipo de erro:Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na cláusula FROM.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Danilo,

 

Ao colocar comandos SQL como string, atente que os mesmos não tem separadores de linha (CRLF). Logo, você precisa se preocupar em manter um espaço entre as linhas quando concatenar:

 

SQL = "SELECT top 3 * FROM categorias"	SQL = SQL & " INNER JOIN Links ON Categorias.id = Links.IDCategoria "	SQL = SQL & " INNER JOIN Links2 ON Links.N1 = Links2.ID "

Adicionei um espaço na frente de cada INNER. Tente dessa maneira.

 

Abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso sempre este exemplo amigo, vê se ajuda...

	Select  tab.dado1, tab.dado2, ta2.dado3, ta3.dado4, ta3.dado5

From tabela tab

Inner Join tabela2 ta2
	  On ta2.dado3 = tab.dado3

Inner Join tabela3 ta3
	  On ta3.dado4 = tab.dado4
	  On ta3.dado5 = ""

Agora é só incrementar.

[]tz ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai caramba, não tá dando certo. Tentei diversas variações:

 

SQL = "SELECT * FROM categorias, links2 "	SQL = SQL & "inner join links ON categorias.id = links.idcategoria "	SQL = SQL & "inner join links ON links2.id = links.n1 "
SQL = "SELECT * FROM categorias, links2 "	SQL = SQL & "inner join links ON categorias.id = links.idcategoria "	SQL = SQL & "ON links2.id = links.n1 "
SQL = "SELECT * FROM categorias, links2 "	SQL = SQL & "inner join links ON categorias.id = links.idcategoria and "	SQL = SQL & "inner join links ON links2.id = links.n1 "

A maioria das tentativas deu o erro:

 

Tipo de erro:Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na operação JOIN.

Parece que eu tô chegando perto, mas não vai... onde será que está o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não seria isso que você quer?

 

SELECT categoria.descricaoFROM (categoria INNER JOIN links ON categoria.id = links.id) INNER JOIN links2 ON links.n1 = links2.id;

Compartilhar este post


Link para o post
Compartilhar em outros sites

me corrijam se estiver errado por favor, mas no inner join devemos selecionar apenas uma tabela e juntar as outras com inner join....a junção dos dados é feita pelo inner join e assim temos acesso aos campos selecionados de duas ou mais tabelas. Normalmente selecionamso como tabela "principal" a tabela que tem mais campos entre as que queremos juntar

Compartilhar este post


Link para o post
Compartilhar em outros sites

AEEEEEEE!!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

marioufpa, Roney, Daw e jonathandj, MUITO OBRIGADO! Fiz desse jeito encadeando com INNER JOINs!

 

Ficou assim:

 

SQL = "SELECT * FROM "	SQL = SQL & "(categorias inner join links ON categorias.id = links.idcategoria) "	SQL = SQL & "inner join links2 ON links.n1 = links2.id "

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh! eu acho que entendi errado seu outro post...era só colocar o * ou os campos que você quer selecionar, no exemplo que coloquei selecionei apenas a descrição que está em uma tabela, mas você pode selecionar o campo que quiser, desdeque esteja em uma das tabelas no inner join, não esquecendo que é sempre bom selecionar apenas os campos necessario e colocar o nomeDaTabela.NomeDoCampo para evitar erro de nome do campo duplicado

Compartilhar este post


Link para o post
Compartilhar em outros sites

parabens tiozinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

bacana! parabéns, essa evolução múltipla é mto bacana!

 

[]tz ;)

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.