web-gelistirme-sc.com

TAM OUTER JOIN vs.

Katılmaları daha iyi anlamak için sadece sorgularla ve örneklerle uğraşmak. SQL Server 2008'de, aşağıdaki iki sorgunun aynı sonuçları verdiğini fark ediyorum:

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name

Bunlar aynı sonuçları üretmek için tamamen aynı işlemi yapıyorlar mı, yoksa daha karmaşık bir örnekte farklı sonuçlarla karşılaşabilir miyim? Bu sadece değiştirilebilir bir terminoloji mi?

68
CptSupermrkt

Aslında onlar aynı. LEFT OUTER JOIN, LEFT JOIN ile aynıdır ve RIGHT OUTER JOIN, RIGHT JOIN ile aynıdır. INNER Join ile karşılaştırmak daha bilgilendirici bir yoldur.

Detaylar için Wikipedia makalesi bakınız.

84
John Woo

Microsoft® SQL Server ™ 2000, bir FROM yan tümcesinde belirtilen dış birleşimler için bu SQL-92 anahtar sözcüklerini kullanır:

  • SOL DIŞ KATILDI veya SOL KATILDI

  • DOĞRU OUTER JOIN veya DOĞRU JOIN

  • TAM OUTER JOIN veya TAM JOIN

MSDN

full outer join veya full join, her iki tablodaki tüm satırları döndürür, eşleşmenin yapılabileceği her yerde satırları eşleştirir ve eşleşen bir satır bulunmayan yerlere NULL'ler yerleştirir.

28
Lion

Bazı veritabanlarının OUTER anahtar sözcüğünü tanıdığı doğrudur. Bazı yok. Tanındığı yerde, genellikle bir isteğe bağlı anahtar sözcüğüdür. Neredeyse her zaman, FULL JOIN ve FULL OUTER JOIN aynı şeyi yapar. (Nerede olmadıklarına dair bir örnek düşünemiyorum. Başka biri düşünebilir mi?)

Bu, “Anlamı yoksa neden bir anahtar kelime bile olsa?” Diye merak etmenize neden olabilir. Cevap programlama stiline kadar kaynar.

Eski günlerde, programcılar kodlarını olabildiğince kompakt hale getirmeye çalıştılar. Her karakter daha uzun işlem süresi anlamına geliyordu. 1, 2 ve 3 harf değişkenleri kullandık. 2 haneli yıl kullandık. Gereksiz beyaz boşlukları yok ettik. Bazı insanlar hala bu şekilde programlar. Artık işlem süresi ile ilgili değil. Hızlı kodlama hakkında daha fazla.

Modern programcılar daha açıklayıcı değişkenleri kullanmayı öğrenirler ve kodlarına daha fazla açıklama ve belge koyarlar. OUTER gibi fazladan kelimeler kullanmak, kodu okuyan diğer kişilerin daha kolay bir zamana sahip olmalarını sağlar. Daha az belirsizlik olacaktır. Bu tarz çok daha okunaklıdır ve gelecekte bu kodu sürdürmesi gereken insanlara karşı daha naziktir.

8
MarvinM

On TableA.name = TableB.name çıkarın. Kartezyen ürününü göreceksiniz.

0