ON koşulu olmadan mysql JOIN nasıl kullanılır?


106

İfade olmadan birleştirme sorgusu yazmak mümkün müdür ON? ve bu birleşimler nasıl farklı LEFT JOIN, RIGHT JOINişler.


1
As ONfıkra masaları hayır, bağlantı hakkında sunucuyu söyler. Farklı birleştirme türleriniz aynı sonucu veriyorsa, bir şekilde yanlış yapıyorsunuzdur ve bazı kodlar eklemek sorununuzu belirlememize yardımcı olabilir. Bu arada , farklı katılım türlerine 2 dakikalık bir giriş için Jeff Atwood'un bloguna gidin .
fvu

Yanıtlar:


154

MySQL belgeleri bu konuyu kapsar.

İşte bir özet. Kullanırken joinveya inner join, ondurum isteğe bağlıdır. Bu, ANSI standardından ve hemen hemen diğer tüm veritabanlarından farklıdır. Etkisi bir cross join. Benzer şekilde, standart SQL'den de farklı olan onile bir cümle kullanabilirsiniz cross join.

Bir çapraz birleşim, Kartezyen bir ürün oluşturur - yani, ilk tablodan 1 satır ve ikinci tablodan 1 satırın olası her kombinasyonu. Üç sıralı ('a', 'b' ve 'c') bir tablo ve dört sıralı (örneğin 1, 2, 3, 4) bir tablo için çapraz birleşim 12 satıra sahip olacaktır.

Pratikte, çapraz birleştirme yapmak istiyorsanız, şunu kullanın cross join:

from A cross join B

şundan çok daha iyi:

from A, B

ve:

from A join B -- with no on clause

onFıkra bir hak için gerekli veya tartışma onlar için alakalı değildir bu yüzden dış katılmak bırakılır.

Farklı birleştirme türlerini anlamanız gerekiyorsa, ilişkisel veritabanları üzerinde biraz çalışmanız gerekir. Stackoverflow, bu tartışma düzeyi için uygun bir yer değildir.


1
Hiç bir çapraz bağlantı duymadım ya da buna ihtiyaç duymadım ... bugüne kadar!
goneos

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.