Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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,
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?
Oi Danilo,Não rolou porque deu algum erro, ou não rolou porque não trouxe nenhum dado??
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.
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,
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 ;)
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?
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;
Nossa cara, acho que é por aí sim, mas exatamente assim não rolou, pq no FROM tem 2 tabelas, CATEGORIAS e LINKS2...
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
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 "
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
parabens tiozinho
bacana! parabéns, essa evolução múltipla é mto bacana!
[]tz ;)
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