Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Self join no oráculo com exemplos


Este tutorial do Oracle SQL se concentra na autojunção no oracle e fornece sintaxe, explicações, exemplos

Uma autojunção no Oracle é uma junção da tabela do Oracle com ela mesma. Podemos usar a tabela várias vezes .Cada ocorrência deve ter um nome alternativo.O banco de dados Oracle enquanto executa a consulta junta a tabela com ela mesma e produz o resultado
General  syntax
select a.col1 ,b.col2  from mytable a,mytable b where <join condition> ;

Algumas autojunções no exemplo Oracle

(1) Apresentação de dados hierárquicos

Temos uma tabela de funcionários e queremos especificar o nome do funcionário, nome do gerente para todos os funcionários. Também temos um presidente que não se reporta a ninguém para mostrar na consulta

A consulta abaixo com self join com outer join para extrair os dados no formato desejado

Aqui estão alguns dos pontos que vale a pena notar na consulta acima

uma. Usamos alias diferentes para a ocorrência múltipla da tabela EMP

b. Usamos a junção externa esquerda para mostrar as informações do presidente também

(2) Outro exemplo para extrair as informações do funcionário que tem a mesma data de contratação

(3) Podemos usar a autojunção para transpor as linhas na coluna Além disso. Temos uma tabela customer_bill que tem várias linhas para as linhas de um mês diferente no ano e queremos mostrar o valor da fatura para um mês diferente no formato de coluna
Desc customer_bill
--------------
Customer_id Varchar2(10)
bill_amount Number
bill_month Varchar2(10)

consulta de tabela
select Customer_id,bill_amount,bill_month
from customer_bill where
customer_id=1111;

Consulta para transpor linhas em coluna
select a.customer_id , b.bill_amount Jan-amount , 
c.bill_amount Feb-amount ,
c.bill_amount Mar-amount from customer_bill a ,customer_bill b,
customer_bill c where a.customer_id=b.customer_id ,
b.customer_id =c.customer_id 
and a.bill_month='JAN' 
and b.bill_month='FEB' and c.bill_month='MAR' 
and a.customer_id=1111;

Da mesma forma, podemos ter vários usos da autojunção no oracle. Por favor, deixe-me saber se você gosta deste post

Artigos relacionados
oracle sql join:O que são Oracle Joins com exemplos (Sql joins), Diferentes tipos de joins, Inner Join,Outer join,left outer join,right outer join,cross join com exemplos
exemplos de sintaxe de Oracle join :Confira este post para exemplos de sintaxe de junção oracle sobre junção interna, junção cruzada, junção externa, junção externa esquerda, junção externa direita
Método de junção no Oracle:Este post explica os vários métodos de junção de plano no Oracle, loop aninhado, sort merge join, cartesian join, hash join para ajudar a entender
Nested Loop Join in Oracle 11g:Confira esta página para todos os detalhes sobre Nested loop join no oracle, como o Nested Loop Join no Oracle 11g é diferente, como aninhado O loop join funciona no Oracle
Hash join no Oracle:Confira este post para a descrição detalhada do Hash join no Oracle, Como é diferente do Nested Loop join no Oracle