[oracle_br] Re: Relacionamento automático no Sql

2008-06-19 Por tôpico jlchiappa
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

2008-06-19 Por tôpico Rosivaldo
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

2008-06-19 Por tôpico vin_monteiro2003
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
>