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
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ı.
Oracle kullanarak SEÇİN...
Nasıl bir veritabanı Oracle ve SQL kul...
Oracle SID yerine Hizmet Adı kullanara...
Nasıl Eclipse, Oracle kullanarak Çalış...
Nasıl varlık ilişki (ER) diyagramı Ora...