Como fazer uma NATURAL INNER JOIN no Interbase

Firebird

06/11/2003

Olá Pessoal!

Estou precisando muito de saber se existe um comando equivalente ao NATURAL INNER JOIN para o Interbase, já que este comando faz a junção de duas tabelas sem a necessidade de se especificar os campos. Utilizando o comando INNER JOIN para fazer o mesmo, tenho que especificar cada campo necessário e isso está dando muito trabalho. (Vejam exemplo abaixo).

Ex.: ´Select * From Empregado NATURAL INNER JOIN Trabalha´

ou

´Select nome_empregado, rua, cidade, nome_companhia,salario from empregado INNER JOIN Trabalha on Empregado.Nome_Empregado=Trabalha.Nome_Empregado´

Por favor, se alguém conhecer alguma função equivalente ou souber uma forma mais fácil de se fazer isso, agradeço.

Desde já obrigado!

________________________
Manoel Pereira Junior
maneljunior@hotmail.com


Maneljunior

Maneljunior

Curtidas 0

Respostas

Afarias

Afarias

06/11/2003

|Estou precisando muito de saber se existe um comando equivalente ao
|NATURAL INNER JOIN para o Interbase, já que este comando faz a
|junção de duas tabelas sem a necessidade de se especificar os campos.

NÃO


|Utilizando o comando INNER JOIN para fazer o mesmo, tenho que
|especificar cada campo necessário e isso está dando muito trabalho.

:?: :!: :?: :!: Muito trabalho para especificar a relação das tabelas ???

...que isso...

se vc acha tanto trabalho assim, a forma mais ´simples´ seria::

select * from empregado e INNER JOIN trabalha t on (e.nome_empregado = t.nome_empregado)


só q em desenvolvimento de sistemas ´indolência´ pode te trazer muitos problemas... be ware!


T+


GOSTEI 0
Maneljunior

Maneljunior

06/11/2003

Caro A.Farias,

seria realmente muito fácil especificar os atributos de cada tabela se eu as conhecesse. No entanto, minha ferramenta SIMULAR, cujo artigo foi publicado na Revista SQL Magazine, Edição 6 trabalha com qualquer base de dados Interbase e não tenho como prever quais os campos que as tabelas do banco de dados terá, por isso tenho que extrair os campos de cada tabela necessária.

Sendo assim, acho que o termo ´INDOLÊNCIA´ no meu caso não se aplica, haja visto que estou tratando da conversão de uma consulta escrita em Álgebra Relacional para SQL, se é que você me entende. Acho também que como moderador, você deveria analisar bem a situação antes de usar termos como este, já que como no meu caso você está redondamente enganado. Desde o começo do ano não sei mais o que é namorar, fim de semana, feriado e principalmente dormir por causa da minha ferramenta.

E digo mais, se você realmente acha tão fácil as coisas, que tal me mandar uma sugestão de como fazer uma análise léxica, sintática e semântica de uma expressão em Álgebra Relacional e mais, como transformá-la depois de passar por todos estes passos para SQL. Como você deixou bem claro que tudo para você é fácil, me mande um roteiro de como fazer isso e lhe serei grato, agora se você nem ao menos souber o que é isso, nem tente pedir ajuda a alguém para me responder, já que este assunto não é para qualquer um, mas se mesmo assim você quiser insistir, consulte o livro do dragão de COMPILADORES (AHO) e o livro SISTEMA DE BANCO DE DADOS, 3ª Edição do Silberschatz. Talvez depois de uns dois anos de

Sem mais para o momento.

______________________
Manoel Pereira Junior
maneljunior@hotmail.com


GOSTEI 0
Maneljunior

Maneljunior

06/11/2003

estudo você consiga me dar a resposta. :evil:
GOSTEI 0
Afarias

Afarias

06/11/2003

|seria realmente muito fácil especificar os atributos de cada tabela se eu
|as conhecesse. No entanto, minha ferramenta SIMULAR, cujo artigo foi
|publicado na Revista SQL Magazine, Edição 6 trabalha com qualquer
|base de dados Interbase e não tenho como prever quais os campos que
|as tabelas do banco de dados terá, {...}

Claro q tem::

select rdb$field_name from rdb$relation_fields
where rdb$relation_name = ´NOME_DA_TABELA´;

8)

bom, é uma pena q eu não tenha a revista, gostaria de dar uma olhada em seu trabalho.


|Sendo assim, acho que o termo ´INDOLÊNCIA´ no meu caso não se
|aplica, haja visto que estou tratando da conversão de uma consulta
|escrita em Álgebra Relacional para SQL, se é que você me entende.

Entendo.


|Acho também que como moderador, você deveria analisar bem a
|situação antes de usar termos como este, já que como no meu caso
|você está redondamente enganado.

Peço q me desculpe. Não achei q fosse um termo ofensivo. Quis apenas alertar q coisas normalmente evitadas como especificar cada um dos campos em um select ou insert -- apesar de trabalhoso, evita muitos problemas, e constitui uma boa prática para qualquer sistema.


|Desde o começo do ano não sei mais o que é namorar, fim de semana,
|feriado e principalmente dormir por causa da minha ferramenta.

Pessoalmente acho q ´alta´ dedicação é importante, mas, ´completa´ dedicação, abandonando qualquer momento de descanso e lazer vai provavelmente atrapalhar em seu trabalho e objetivos (eXtreme Programming - 40Hour week pratice).


|E digo mais, se você realmente acha tão fácil as coisas, que tal me
|mandar uma sugestão de como fazer uma análise léxica, sintática e
|semântica de uma expressão em Álgebra Relacional e mais, como
|transformá-la depois de passar por todos estes passos para SQL.

Bom, acho q tais assuntos fogem ao escopo deste fórum. Entretanto, vc pode adicionar muito a sua aplicação conhecendo melhor as ferramentas q está usando. Neste caso -- em relação do INTERBASE -- tenho certeza que este fórum lhe será muito útil.


|Como você deixou bem claro que tudo para você é fácil, me mande um
|roteiro de como fazer isso e lhe serei grato, agora se você nem ao
|menos souber o que é isso, nem tente pedir ajuda a alguém para me
|responder, já que este assunto não é para qualquer um, mas se mesmo
|assim você quiser insistir, consulte o livro do dragão de COMPILADORES
|(AHO) e o livro SISTEMA DE BANCO DE DADOS, 3ª Edição do
|Silberschatz. Talvez depois de uns dois anos de estudo você consiga me
|dar a resposta

humm... teoria de bancos de dados relacionais até é um assunto que gosto... entretanto... como leitura na área eu realmente prefiro Date (An Introduction to Database Systems; Temporal Data and the Relational Model; The Database Relational Model -- C. J. Date)

Com relação a ´não ser pra qualquer um´ eu não sei não... acredito q qualquer curso em Ciência da Computação, Engenharia de Sistemas e similares possuem a cadeira de Sistemas de Bancos de Dados (cobrindo claro, algebra relacional) -- sendo assim... acho q qualquer pessoa interessada pode se desenvolver no assunto. Mas claro, acredito q esta área a qual vc está seguindo não é fácil e exige dedicação.

mas bom... como desenvolvedor de sistemas (área que tenho seguido), tenho tido q me dedicar mais a ´prática´ (sem esquecer entretanto das teorias q apoiam tais ´práticas´ claro) -- mas:: 1) não existe nenhum banco de dados em uso -- principalmete comercial -- que siga (completamente) a teoria relacional (12 regras de Codd); 2) não sou eu que pretendo construir tal banco. ;) (Entretanto, tenho um conhecido q pretende, se vc quizer passo o e-mail dele para vc discutir teoria com ele) -- alem disso, sabe como são os cronogramas de desenvolvimento, o q me deixa muito ocupado -- sendo assim, acho q não poderei lhe ajudar muito com seu trabalho.

Novamente peço desculpas e, no q se refere a Interbase, acredito q este fórum pode lhe ser muito útil. No mais, sugiro uma visita ao site::

http://www.dbdebunk.com/
http://www.dbforums.com/forumdisplay.php?forumid=116

Entre outros dedicados a Sistemas de Bancos de Dados. E segue alguns em Álgebra Relacional (se bem q não devem ser úteis a vc -- já q a maioria apenas apresenta o básico)::

http://www.csam.iit.edu/~cs561/algebra/home.html
http://www.cs.sfu.ca/CC/354/zaiane/material/notes/Chapter3/node7.html
http://www.cs.ust.hk/faculty/dimitris/COMP530/notes/l2b.pdf
http://www.tc.umn.edu/~hause011/code/SQLexample.txt
http://miami.int.gu.edu.au/dbs/2005/topics/it03gt04.htm
http://www.rsu.edu/faculty/johnnycarroll/cs3223/fa2002/Lectures/The¬20Relational¬20Algebra_Lecture¬201.htm



T+


GOSTEI 0
POSTAR