SORU
2 Temmuz 2011, CUMARTESİ


Sol Dış Oracle 11 g kullanarak işaret Katıl

Herhangi bir 2 aşağıda belirtir misiniz sorguları Sol Dış bir örnek veya Sağ Dış Birleştirme Katılabilir mi??

Table Part:
Name         Null?       Type
PART_ID      NOT NULL    VARCHAR2(4)
SUPPLIER_ID              VARCHAR2(4)

PART_ID SUPPLIER_ID
P1      S1
P2      S2
P3  
P4  

Table Supplier:
Name            Null?     Type
SUPPLIER_ID NOT NULL      VARCHAR2(4)
SUPPLIER_NAME   NOT NULL  VARCHAR2(20)

SUPPLIER_ID  SUPPLIER_NAME
S1           Supplier#1
S2           Supplier#2
S3           Supplier#3

Tüm parçalar herhangi bir tedarikçi onlara malzeme olsun veya olmasın, ne olursa olsun ekran:

SELECT P.Part_Id, S.Supplier_Name
FROM Part P, Supplier S
WHERE P.Supplier_Id = S.Supplier_Id ( )

SELECT P.Part_Id, S.Supplier_Name
FROM Part P, Supplier S
WHERE S.Supplier_Id ( ) = P.Supplier_Id

Teşekkürler!

CEVAP
2 Temmuz 2011, CUMARTESİ


TableA LEFT OUTER JOIN TableB TableB RIGHT OUTER JOIN Table A eşdeğerdir.

Oracle, ( ) "" BİRLEŞTİRMEK. tablo isteğe bağlı gösterir İlk sorguda, P LEFT OUTER JOIN S. İkinci sorguda, S RIGHT OUTER JOIN P.İşlevsel olarak eşit.

Terminoloji, SAĞ veya SOL birleşim her zaman bir rekor olan belirtin, diğer tarafı boş olabilir. Bir *12,* ** 13 her zaman LEFT, çünkü bir kayıt var ama S boş olabilir.

Ek açıklama this example from java2s.com bkz.


Açıklığa kavuşturmak için, terminoloji sadece görselleştirmek yardımcı olmak için o kadar önemli değil diyorum sanırım. Önemli olan nasıl kavramını anlamak.


SAĞ vs SOL

SAĞ vs örtülü kaldı belirlemede önemli olan ne hakkında bazı karışıklıklar sözdizimi katılın gördüm.

SOL DIŞ BİRLEŞİM

SELECT *
FROM A, B
WHERE A.column = B.column( )

SAĞ DIŞ BİRLEŞİM

SELECT *
FROM A, B
WHERE B.column( ) = A.column

Tüm yaptığım, NEREDE fıkradaki şartların takas tarafı, ama yine de işlevsel olarak eşit. (Benim cevabım daha yukarı bu konuda daha fazla bilgi için bkz.) ( ) yerleşimini SAĞ veya SOL belirler. Eğer ( ) sağdaki ise (özellikle, bir SOL KATIL. Eğer ( ) Sol, bir SAĞ KATILIN.)


BİRLEŞTİRME türleri

KATILIN iki stilleri vardırörtülü Katıldıveaçık Katıldı. Katılır yazma farklı stilleri vardır, ama işlevsel olarak eşdeğer.

this SO question bkz.

Örtülü Katıldısadece liste, tüm tabloları bir arada. Katılma şartlarında belirtilen fıkra.

Örtülü KATIL

SELECT *
FROM A, B
WHERE A.column = B.column( )

Açık Katıldıilişkilendirmek belirli bir tablo yerine bir YERE eklenmesi ile yan koşulları katılın.

Birleşmede

SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column

Bu Örtülü okumak ve anlamak daha zor olabilir Katılıyor ve onlar da katılmak koşulları diğer karıştığında koşulları NEREDE beri birkaç sınırlamalar var. Gibi, örtülü genellikle açık sözdizimi lehine karşı önerilen Katıldı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008