GARANTIR DESCONTO

Fórum inner join #345064

24/08/2007

0

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.


Daykas

Daykas

Responder

Posts

24/08/2007

Marcosrocha

Amigo se usar somente o JOIN dá pau?


Responder

Gostei + 0

24/08/2007

Sillier

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.


Responder

Gostei + 0

24/08/2007

Marcosrocha

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:


Responder

Gostei + 0

25/08/2007

Emerson Nascimento

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.


Responder

Gostei + 0

25/08/2007

Daykas

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


Responder

Gostei + 0

25/08/2007

Sillier

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...


Responder

Gostei + 0

25/08/2007

Marcosrocha

sillier, eu confesso que não sabia que ao usar JOIN ele tratava como INNER JOIN :oops: . Mas o efeito eu sei qual é :P...


Responder

Gostei + 0

28/08/2007

Daykas

Ai pessoal! Relaxa que já descobri o caminho das pedras.

Carlos


Responder

Gostei + 0

28/08/2007

Marcosrocha

Então, por favor, se possível, poste a solução para ajudar os irmãos da comunidade... :lol:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar