Tabloları birleştirme fonksiyonlarından bir diğeri de CROSS JOIN fonksiyonudur. Bu fonksiyon nadiren kullanılır. Aslında iki tablonun kartezyen çarpma işlemini gerçekleştirmektedir. Yani bir a tablosunda yer alan her satır veri bir diğer b tablosundaki yer alan her satırdaki veri ile eşleşir. Syntax olarak kullanımı :
SELECT listelenecek kolonlar FROM tablo1 CROSS JOIN tablo1
Söz diziminde yani syntaxda görüldüğü üzere FROM’dan sonra herhangi bir koşul söz konusu değil. Çünkü CROSS JOIN mantığına koşul olayı ters, üstte de belirttiğim gibi bir tablodaki her veri satırı diğer tablodaki veri satırı ile eşleşiyor. Şimdi adventureworks 2012 veri tabanı üzerinde bir query oluşturalım.
SELECT Urun.ProductID, Bolge.LocationID FROM Production.Product AS Urun CROSS JOIN Production.Location AS Bolge ORDER BY ProductID
Sorgumda Production.Product tablosundaki ProductID ile Production.Location tablosundaki LocationID kolonlarını CROSS JOIN ile listeliyorum. Burada Production.Product tablosunda 504 veri var. Production.Location tablosunda ise 14 veri var. Dolayısı ile 504 * 14 = 7056 satır veri listelenecek. Yani iki tablonun kartezyenini alıyoruz. Aşağıdaki resimden de sorgunun sonucunu görebilirsiniz.
Şimdi de aynı sorguyu LocationID’ye göre sıralayalım.
SELECT Urun.ProductID, Bolge.LocationID FROM Production.Product AS Urun CROSS JOIN Production.Location AS Bolge ORDER BY LocationID
Bunun sonucunda da her bir LocationID değeri için 504 farklı ProductID değeri sıralanacak.