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

Gosatria De Unir 3 Tabelas Do Mesmo Bd


Brunao

Pergunta

Procurei nos tópicos mas todos os códigos que testei não funcionaram.

BANCO DE DADOS: teste.mdb

TABELAS: *funcionarios

-id

-nome

-sobrenome

-cargo

*Dados

-cod

-id

-rua

-endereco

-telefone

-cod

*faltas

-cod

-id

-faltas

-justificativa

Então gostaria de fazer uma conexão como essa que vou postar abaixo com o bco de dados, mas que juntasse os dados das tres tabelas: dados, funcionarios e faltas pelo id. De forma que eu de o id e o resultado seja:

Nome, sobrenome, rua, endereco, telefone, faltas, justificativa


<%
set DB = Server.CreateObject("ADODB.Connection")
DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("teste.mdb") 
DB.open
Set rs = DB.Execute("SELECT ")
%>

Gostaria que alguém adaptasse esse select pra mim. Ou pelo menos arruma-lo.

Obrigado Galera!!!!

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

Boa Tarde Brunao

Bom.. vamos por partes!

você quer pegar o conteudo das 3 tabelas, e criar uma tabela no banco, com o conteudo das 3?

Ou você quer mostrar o conteudo das 3 na tela?

Link para o comentário
Compartilhar em outros sites

  • 0

Pô cara, na boa já entrei em todos os fóruns que conheço. Poxa todos os posts que sei eu ajudo, mas até agora ninguém me ajudou em nenhum fórum.

Até me ajudam mas assim:

"SELECT funcionarios.*, dados.*, falta.* FROM funcionarios, dados, falta WHERE [CONDIÇÃO DESEJADA]"

Sendo que já testei todos os códigos mas não rodam.

Queria que me ajudassem passando um código simples ou adapitando o meu código mas por favor alguma coisa mais objetiva.

Veja bem eu tenho a bíblia do ASP , tem coisas sobre o assunto mas adapito pra o meu código e dá erro.

O que eu quero é o seguinte:

O link passa o id:

www.site.com.br?id=1

aí a página pega a tabela funcionários e joga na tela o nome, sobrenome e o cargo. Da tabela Dados joga na tela, endereco e telefone e na tabela faltas pega o numero de faltas e justificativa.

sacou, mas nínguém me ajuda, talvez seja muito díficil, porém não creio que nínguém saiba.

Me da um help, por favor!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Brother !!!!

Muita calma nessa hora !!!

hehehehehe

Quando ninguém aqui lhe responde, não é que ninguém quer ajudar, e sim que talvez ninguém saiba responder suas duvidas!

Dexa eu ver se eu entendi.. você quer fazer um select de todas as tabelas onde, por ex: o ID = 1.

É isso?

Não sou expert em SQL, mas quem sabe posso te ajudar..

Link para o comentário
Compartilhar em outros sites

  • 0

Eu, particularmente, nesses casos, prefiro criar uma Consulta dentro do banco de dados (selecionado os campos necessario das tabelas mencionadas) e atraves do objeto 'Command' ("Adodb.Command") executar a instrução e passar os dados para meu RecordSet huh.gif

Sei que não resolve seu problema, mas é uma dica!

Abraços!!!

[urso]

Link para o comentário
Compartilhar em outros sites

  • 0

Esse é o código que estou usando para testar

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
ID = Request.QueryString("Id")

set DB = Server.CreateObject("ADODB.Connection")
DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("teste.mdb") 
DB.open
Set rs = DB.Execute("SELECT a.nome, a.sobrenome, b.rua, b.endereco, b.telefone, c.faltas, c.justificativa FROM funcionarios AS a INNER JOIN dados AS b ON a.id = b.id INNER JOIN faltas AS c ON b.id = c.id WHERE a.id ="&id)
%>

</body>
</html>
Esse é o erro que ta dando
Tipo de erro:
Microsoft JET Database Engine (0x80040E14)
Erro de sintaxe (operador faltando) na expressão de consulta 'a.id = b.id INNER JOIN faltas AS c ON b.id = c.id'.
/flog/teste.asp, line 16

Deem uma olhadinha pra mim.

Valeu galera!!

Link para o comentário
Compartilhar em outros sites

  • 0

e ae, beleza?

Bom.. tenta colocar assim:

Set rs = DB.Execute("SELECT a.nome, a.sobrenome, b.rua, b.endereco, b.telefone, c.faltas, c.justificativa FROM funcionarios AS a INNER JOIN dados AS b ON a.id = b.id INNER JOIN faltas AS c ON b.id = c.id WHERE a.id ="&id&"")

eu mudei só onde ta em negrito

Link para o comentário
Compartilhar em outros sites

  • 0

Eu sei que eu devo ser o cara mais mala do Fórum, mas já que você se propõe a me ajudar:

Da uma olhada, diminui o código e arrumei o que você me indicou em negrito, pois bem, o código esta aqui:

<%
ID = Request.QueryString("Id")

set DB = Server.CreateObject("ADODB.Connection")
DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("teste.mdb") 
DB.open
Set rs = DB.Execute("SELECT a.nome, a.sobrenome, b.rua, b.endereco, b.telefone, c.faltas, c.justificativa FROM funcionarios AS a INNER JOIN dados AS b ON a.id = b.id INNER JOIN faltas AS c ON b.id = c.id WHERE a.id ="&id&"")
%>
Esse é o erro, parece que está faltando algo nessa sintaxe, tu que manja mais, ve se tu descobre onde é. O erro é esse:
Tipo de erro:
Microsoft JET Database Engine (0x80040E14)
Erro de sintaxe (operador faltando) na expressão de consulta 'a.id = b.id INNER JOIN faltas AS c ON b.id = c.id'.
/flog/teste3.asp, line 7

Link para o comentário
Compartilhar em outros sites

  • 0

Eita..

hehe

Olha só..

me tira uma duvida..

De onde você tira o valor disso aqui?

ID = Request.QueryString("Id")

Pode ser tb, que essa variavel ID esteja vazia, aí, no where te dá erro de operador faltando..

Veja se está OK nessa variavel, antes de quebrar a cabeça com o resto..

Link para o comentário
Compartilhar em outros sites

  • 0

Essa váriavel eu tiro do endereço:

www.site.com.br?id=7

Na boa poderia, testar de qualquer forma até sem o where, mas testei todas as formas possíveis e imaginaveis, e não consegui fazer rodar nenhum select com inner join, nem o mais simples.

Link para o comentário
Compartilhar em outros sites

  • 0

www.site.com.br?id=7
dry.gif

Não seria:

???

E Reginaldo, eu nunca usei o INNER JOIN do jeito que você usou, funciona mesmo? Isso se você tem alguma coisa funcionando dakele modo...

Vi um post do Rodrigo F*Ck *oU lá WMonline e ele faz algo parecido como o seu... (num tópico do brunao também)

Link para o comentário
Compartilhar em outros sites

  • 0

É isso mesmo Guto, eu postei errado.

Cara eu estou com posts em vários sites, tipo wmonline, SB, imasters etc...

Acredita que não consegui tirar minha dúvida.

Acho que a galera tem uma gde dificuldade que nem eu, para fazer esse inner join, ainda não consegui fazer um funcionar.

Continuo esperando alguma alma caridosa me ajudar!!!

E a todos que estão tentando me ajudar, Muito Obrigado!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Brother, acho que nem precisa um triplo inner join digamos, eu nunca tentei.

Mas faça um inner join, depois usando algum dado resultado deste recordset do tal inner join, você insere em uma nova string sql e faz um outro recorset, assim em código:

set rs = conexao.execute("SELECT * FROM tab1 INNER JOIN tab2 ON tab1.campoID = tab2.campoID WHERE tab1.campoID="&id)

set rs2 = conexao.execute("SELECT * FROM tab3 WHERE campoID="&rs("campoID"))

Link para o comentário
Compartilhar em outros sites

  • 0

Ajudou?

Estou pensando em fazer tutorial sobre como unir tabelas...

ando vendo que mta gente tem dúvida quanto a isso!

Link para o comentário
Compartilhar em outros sites

  • 0

Brother, acho que nem precisa um triplo inner join digamos, eu nunca tentei.

Mas faça um inner join, depois usando algum dado resultado deste recordset do tal inner join, você insere em uma nova string sql e faz um outro recorset, assim em código:

set rs = conexao.execute("SELECT * FROM tab1 INNER JOIN tab2 ON tab1.campoID = tab2.campoID WHERE tab1.campoID="&id)

set rs2 = conexao.execute("SELECT * FROM tab3 WHERE campoID="&rs("campoID"))

Cara, o inner join é muito importante, e você abre o cursor apenas uma vez...

Quanto mais recordset você abre, mais degradado fica o seu banco de dados... Evite ao extremo abrir cursores desnecessários, e também evite ao extremo usar clausulas como UNION...

E Reginaldo, eu nunca usei o INNER JOIN do jeito que você usou, funciona mesmo? Isso se você tem alguma coisa funcionando dakele modo...

Cara, eu tenho inner join com left join, com right join ligando mais de 10 tabelas

Não tem limite de joins que você possa inserir na query.

Link para o comentário
Compartilhar em outros sites

  • 0

Bohhh... vou dar uma olhada com calma quando tudo tiver melhor por aki...

E quanto a historia dos recordsets, eu sei... degradam mesmo!

Meu portal aki tá "limpinho".

Mas como sei q o BD vai ficar cheio rápido, já ando pensando em mudar BD (MySQL)

E o cara do tópico, já sanou sua dúvida???

Link para o comentário
Compartilhar em outros sites

  • 0

Mas como sei q o BD vai ficar cheio rápido, já ando pensando em mudar BD (MySQL)

Cara, MySQL é uma boa escolha... Quando você baixar o MySQL, você pode usar o MySQL front pra administrar o banco... Ele é bem prático e tem uma aparencia bem parecida com o SQL Server... Bem legal!

Abraços a todos

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...