[oracle_br] Re: Relacionamento automático no Sql
SIm, a sintaxe ANSI de JOINs (natural inclusive) já é aceita há vários releases no bd Oracle, mas IMHO natural join simplesmente NÂO vale a pena, muito alta a chance de vc ter problemas de recursividade em se deixando o SQL escolher os camos a ligar - por exemplo, tabela de empregados que também contém o gerente, já que gerentes são empregados também, cfrme mostrado em http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:8764523461767 ... Sorry, mas eu é que não aceito, em nome de uma pretensa "FACILIDADE" pra desenvolvedor usar alguma coisa tão propensa a falha, não A minha recomendação é MESMO, SÓ PODE SER, se especificar DIREITINHO quais são as colunas-chave do JOIN, esse negócio de deixar o SQL escolher baseado em nome de coluna me dá arrepios []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Roberson Alves <[EMAIL PROTECTED]> escreveu > > vin_monteiro2003 escreveu: > > > > Oracle 10g, SqlPlus > > > > Bom dia, > > O Oracle faz algo como auto-relacionamento no sql, sem precisar > > definir o join entre duas tabelas. > > Por exemplo: > > select f.cd_deptno, d.nm_deptno, f.name, f.cd_func > > from func f, dept d > > > > e ele já trás o relacionamento se gerar um produto cartesiano para > > este select acima ? > > > > Obrigado > > > > > Bom dia, > > Acredito que isso não seja possível, este comando por padrão gera um > produto cartesiano. É o mesmo que usar um cross join. > O que você pode fazer é tentar usar o natural join(junção natural): > select f.cd_deptno, d.nm_deptno, f.name, f.cd_func > from func f > natural join dept d; > > Roberson >
Re: [oracle_br] Re: Relacionamento automático no Sql
select f.cd_deptno, d.nm_deptno, f.name, f.cd_func from func f natural join dept d como disse, se vc tiver o a constraint de fk definida, e for o mesmo nome e for o mesmo tipo, se não atender isso ele não funciona 2008/6/19 vin_monteiro2003 <[EMAIL PROTECTED]>: > Bom dia, Rosivaldo.. > E como seria esse natural join ? Eu teria que escrevê-lo no sql ou > só de fazer a foreing key na criação da tabela ele já faz isso ? > Poderia exemplificar ? > > obrigado > > --- Em oracle_br@yahoogrupos.com.br, Rosivaldo <[EMAIL PROTECTED]> > escreveu > >> >> Usa natural join, isso se as colunas tiverem o mesmo nome e tipo. >> >> 2008/6/19 vin_monteiro2003 <[EMAIL PROTECTED]>: >> > Oracle 10g, SqlPlus >> > >> > Bom dia, >> > O Oracle faz algo como auto-relacionamento no sql, sem precisar >> > definir o join entre duas tabelas. >> > Por exemplo: >> > select f.cd_deptno, d.nm_deptno, f.name, f.cd_func >> > from func f, dept d >> > >> > e ele já trás o relacionamento se gerar um produto cartesiano > para >> > este select acima ? >> > >> > Obrigado >> > >> > >> >> >> >> -- >> Rosivaldo Azevedo Ramalho >> mail/msn: [EMAIL PROTECTED] >> web: http://rosivaldo.goodiez.net >> +55 83 8893 8281 >> > > -- Rosivaldo Azevedo Ramalho mail/msn: [EMAIL PROTECTED] web: http://rosivaldo.goodiez.net +55 83 8803 0969
[oracle_br] Re: Relacionamento automático no Sql
Bom dia, Rosivaldo.. E como seria esse natural join ? Eu teria que escrevê-lo no sql ou só de fazer a foreing key na criação da tabela ele já faz isso ? Poderia exemplificar ? obrigado --- Em oracle_br@yahoogrupos.com.br, Rosivaldo <[EMAIL PROTECTED]> escreveu > > Usa natural join, isso se as colunas tiverem o mesmo nome e tipo. > > 2008/6/19 vin_monteiro2003 <[EMAIL PROTECTED]>: > > Oracle 10g, SqlPlus > > > > Bom dia, > > O Oracle faz algo como auto-relacionamento no sql, sem precisar > > definir o join entre duas tabelas. > > Por exemplo: > > select f.cd_deptno, d.nm_deptno, f.name, f.cd_func > > from func f, dept d > > > > e ele já trás o relacionamento se gerar um produto cartesiano para > > este select acima ? > > > > Obrigado > > > > > > > > -- > Rosivaldo Azevedo Ramalho > mail/msn: [EMAIL PROTECTED] > web: http://rosivaldo.goodiez.net > +55 83 8893 8281 >