İ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.
İ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.
Yanıtlar:
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.
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);
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 .