inner join
Amigos! Boa tarde.
Estou com um problema e preciso de ajuda, quanto antes.
Tenho três tabelas:
Cep
id_cep, logradouro,id_cidade,id_bairro,uf
Cidade
id_cidade,cidade,uf
Bairro
id_bairro,bairro,id_cidade
Quando escrevo uma query diretamente no SQL com inner join o resultado é perfeito, mas quando insiro no delphi e vou chamar a pesquisa, se eu não colocar todos as colunas da tabela cep (que é a principal na pesquisa) o delphi retorna erro.
Depois de colocar todas as colunas da tabela Cep, quando executo a pesquisa, no grid as colunas bairro e cidade não são apresentadas.
Já inseri as colunas bairro e cidade na tabela Cep e mantive com valor NULL, mas também não retorna a cidade e o bairro.
Uso Delphi 7 e SQL 2005. No SQL 2000 acontece a mesma coisa.
select a.id_cep, a.logradouro, a.id_cidade, a.id_bairro, a.uf, b.cidade, c.bairro from cep a
inner join cidade b on a.id_cidade = b.id_cidade
inner join bairro c on a.id_bairro = c.id_bairro
Por favor! Obrigado.
Estou com um problema e preciso de ajuda, quanto antes.
Tenho três tabelas:
Cep
id_cep, logradouro,id_cidade,id_bairro,uf
Cidade
id_cidade,cidade,uf
Bairro
id_bairro,bairro,id_cidade
Quando escrevo uma query diretamente no SQL com inner join o resultado é perfeito, mas quando insiro no delphi e vou chamar a pesquisa, se eu não colocar todos as colunas da tabela cep (que é a principal na pesquisa) o delphi retorna erro.
Depois de colocar todas as colunas da tabela Cep, quando executo a pesquisa, no grid as colunas bairro e cidade não são apresentadas.
Já inseri as colunas bairro e cidade na tabela Cep e mantive com valor NULL, mas também não retorna a cidade e o bairro.
Uso Delphi 7 e SQL 2005. No SQL 2000 acontece a mesma coisa.
select a.id_cep, a.logradouro, a.id_cidade, a.id_bairro, a.uf, b.cidade, c.bairro from cep a
inner join cidade b on a.id_cidade = b.id_cidade
inner join bairro c on a.id_bairro = c.id_bairro
Por favor! Obrigado.
Daykas
Curtidas 0
Respostas
Marcosrocha
24/08/2007
Amigo se usar somente o JOIN dá pau?
GOSTEI 0
Sillier
24/08/2007
Quando escrevo uma query diretamente no SQL com inner join o resultado é perfeito, mas quando insiro no delphi e vou chamar a pesquisa, se eu não colocar todos as colunas da tabela cep (que é a principal na pesquisa) o delphi retorna erro.
Qual o erro retornado pelo Delphi? Seja específico...
Que compoentes está utilizando para fazer o acesso a base de dados?
Usar apenas [color=blue:0af7e09ccf]JOIN[/color:0af7e09ccf] não dá nenhum erro.
Abraço.
GOSTEI 0
Marcosrocha
24/08/2007
Eu uso componentes da paleta InterBase na versão 7.0 do Delphi. Não uso patch algum ou componentes de terceiros. Mas um fato curioso é que eu não consigo criar TRIGGERS via Query em tempo de execução. Logo, suponho que há alguma limitação em se usar o Inner Join, pelo menos nessa situação específica pela qual você está passando. Corrija-me se estiver errado, muito embora eu não uso Inner Join. Mas tentei usar de todo meu conhecimento pra le ajudar... :oops:
GOSTEI 0
Emerson Nascimento
24/08/2007
Eu uso componentes da paleta InterBase na versão 7.0 do Delphi. Não uso patch algum ou componentes de terceiros. Mas um fato curioso é que eu não consigo criar TRIGGERS via Query em tempo de execução. Logo, suponho que há alguma limitação em se usar o Inner Join, pelo menos nessa situação específica pela qual você está passando. Corrija-me se estiver errado, muito embora eu não uso Inner Join. Mas tentei usar de todo meu conhecimento pra le ajudar... :oops:
não é possível criar Triggers ou Stored Procedures porque são scripts e os componentes nativos executam apenas uma linha de comando. Um select, por mais complexo que seja, é apenas uma linha, enquanto que uma Trigger ou uma Stored Procedure pode conter várias linhas de comando.
[b:cc27fb05a4]daykas[/b:cc27fb05a4], por acaso você tem campos persistentes no seu dataset? e na grade as colunas estão pré-definidas ou são exibidas somente quando da abertura do dataset?
se possível publique o código do dfm (formulário) pra que possamos avaliar melhor.
GOSTEI 0
Daykas
24/08/2007
Pessoal! Bom dia.
Não estou querendo criar nada, apenas dando um select com inner join.
Fiz um teste num banco e o resultado da outra tabela inserida no join é retornado só se eu colocar uma coluna na tabela principal com o mesmo data type e mantê-la com o valor nulo, ou seja, sem gravar nada nesta coluna.
Eu não estou achando que isso está correto, por isso recorri ao forum.
Obrigado;
Carlos
Não estou querendo criar nada, apenas dando um select com inner join.
Fiz um teste num banco e o resultado da outra tabela inserida no join é retornado só se eu colocar uma coluna na tabela principal com o mesmo data type e mantê-la com o valor nulo, ou seja, sem gravar nada nesta coluna.
Eu não estou achando que isso está correto, por isso recorri ao forum.
Obrigado;
Carlos
GOSTEI 0
Sillier
24/08/2007
Olá mcblade,
Não existe nenhum problema em se usar JOIN ou INNER JOIN, ambos tem o mesmo efeito sobre a consulta. Isso é apenas uma questão de sintaxe..
A mesma coisa referente a colocar ALIAS em tabelas e campos, pode-se usar o operador AS ou simplesmente omití-lo. Funciona! :lol:
O que tem que ter em mente é que quando se utliza apenas JOIN o sql retornará um INNER JOIN, ou seja, fará a consulta como se fosse um INNER que junta os resultados de duas tabelas. Caso precise fazer um LEFT JOIN ou RIGHT JOIN, é preciso declarar as duas palavras.
---
daykas,
Qual componetes de acesso a dados está utilizando para receber a consulta SQL?
Abraços...
Não existe nenhum problema em se usar JOIN ou INNER JOIN, ambos tem o mesmo efeito sobre a consulta. Isso é apenas uma questão de sintaxe..
A mesma coisa referente a colocar ALIAS em tabelas e campos, pode-se usar o operador AS ou simplesmente omití-lo. Funciona! :lol:
O que tem que ter em mente é que quando se utliza apenas JOIN o sql retornará um INNER JOIN, ou seja, fará a consulta como se fosse um INNER que junta os resultados de duas tabelas. Caso precise fazer um LEFT JOIN ou RIGHT JOIN, é preciso declarar as duas palavras.
---
daykas,
Qual componetes de acesso a dados está utilizando para receber a consulta SQL?
Abraços...
GOSTEI 0
Marcosrocha
24/08/2007
sillier, eu confesso que não sabia que ao usar JOIN ele tratava como INNER JOIN :oops: . Mas o efeito eu sei qual é :P...
GOSTEI 0
Daykas
24/08/2007
Ai pessoal! Relaxa que já descobri o caminho das pedras.
Carlos
Carlos
GOSTEI 0
Marcosrocha
24/08/2007
Então, por favor, se possível, poste a solução para ajudar os irmãos da comunidade... :lol:
GOSTEI 0