İfade olmadan birleştirme sorgusu yazmak mümkün müdür ON
? ve bu birleşimler nasıl farklı LEFT JOIN, RIGHT JOIN
işler.
İfade olmadan birleştirme sorgusu yazmak mümkün müdür ON
? ve bu birleşimler nasıl farklı LEFT JOIN, RIGHT JOIN
işler.
Yanıtlar:
MySQL belgeleri bu konuyu kapsar.
İşte bir özet. Kullanırken join
veya inner join
, on
durum 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 on
ile 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
on
Fı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.
Http://www.sitepoint.com/understanding-sql-joins-mysql-database/ adresinde bazı örneklere bakın.
Sorgudaki gibi 'AÇIK' yerine 'KULLANIMI' kullanabilirsiniz
SELECT * FROM table1 LEFT JOIN table2 USING (id);
ON
fı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 .