MySQL CROSS JOIN, iki veya daha fazla tablonun tüm olasılıklarını birleştirmek için kullanılır ve katkıda bulunan tüm tablolardaki her satırı içeren sonucu döndürür. CROSS JOIN aynı zamanda ilgili tüm tabloların Kartezyen çarpımını sağlayan CARTESIAN JOIN olarak da bilinir. Kartezyen çarpım, birinci tabloda bulunan tüm satırların ikinci tabloda bulunan tüm satırlarla çarpılmasıyla açıklanabilir. Bu maddede birleştirme koşulunun mevcut olmadığı İç Birleştirmeye benzer.
Bunu, CROSS JOIN'in tablo1 ve tablo2'deki tüm kayıtları döndürdüğü ve her satırın her iki tablonun satırlarının birleşimi olduğu aşağıdaki görsel gösterimle anlayabiliriz.
MySQL CROSS JOIN Söz Dizimi
CROSS JOIN anahtar sözcüğü her zaman SELECT deyimiyle birlikte kullanılır ve FROM yan tümcesinden sonra yazılmalıdır. Aşağıdaki sözdizimi her iki birleştirme tablosundaki tüm kayıtları getirir:
SELECT column-lists FROM table1 CROSS JOIN table2;
Yukarıdaki sözdiziminde, sütun listeleri, döndürmek istediğiniz sütun veya alanın adıdır ve tablo1 ve tablo2, kayıtları getirdiğiniz tablo adıdır.
MySQL CROSS JOIN Örneği
Left join veya Left Outer join cümleciklerinin işleyişini anlamak için bazı örnekler alalım:
İki tabloyu birleştirmek için CROSS JOIN cümlesi
Burada iki tablo oluşturacağız 'müşteriler' Ve 'kişiler' aşağıdaki verileri içerir:
Tablo: müşteriler
Tablo: kişiler
Her iki tablodaki tüm kayıtları getirmek için aşağıdaki sorguyu yürütün:
SELECT * FROM customers CROSS JOIN contacts;
Sorgu başarıyla yürütüldükten sonra aşağıdaki çıktıyı verecektir:
CROSS JOIN ifadesi çalıştırıldığında 42 satır görüntülendiğini göreceksiniz. Bu, müşteriler tablosundaki yedi satırın kişiler tablosundaki altı satırla çarpılması anlamına gelir.
NOT: Sütunların iki kez tekrarlanması sonucunu önlemek için SELECT * ifadesi yerine tek tek sütun adlarının kullanılması önerilir.
MySQL CROSS JOIN'de Belirsiz Sütunlar sorunu
Bazen seçilen sütun kayıtlarını birden fazla tablodan getirmemiz gerekir. Bu tablolar benzer bazı sütun adlarını içerebilir. Bu durumda MySQL CROSS JOIN ifadesi bir hata verir: sütun adı belirsizdir. Bu, sütunun adının her iki tabloda da mevcut olduğu ve MySQL'in hangi sütunu görüntülemek istediğiniz konusunda kafasının karıştığı anlamına gelir. Aşağıdaki örnekler bunu daha açık bir şekilde açıklamaktadır:
SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders;
Yukarıdaki CROSS JOIN aşağıdaki resimde gösterildiği gibi bir hata veriyor:
Bu sorun, sütun adından önce tablo adı kullanılarak çözülebilir. Yukarıdaki sorgu şu şekilde yeniden yazılabilir:
SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders;
Yukarıdaki sorguyu çalıştırdıktan sonra aşağıdaki çıktıyı elde edeceğiz:
WHERE Cümlesi ile LEFT JOIN
WHERE deyimi geri dönmek için kullanılır. filtre tablodan çıkan sonuç. Aşağıdaki örnek, bunu CROSS JOIN yan tümcesiyle göstermektedir:
SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price>1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named ' <strong>customers'</strong> and ' <strong>orders'</strong> . Let us create one more table and name it as ' <strong>contacts' that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>
Yukarıdaki sorgu başarıyla yürütüldükten sonra aşağıdaki çıktıyı verecektir:
5000;>