Apakah mungkin untuk menulis query join tanpa ON
pernyataan? dan bagaimana gabungan ini LEFT JOIN, RIGHT JOIN
bekerja.
Apakah mungkin untuk menulis query join tanpa ON
pernyataan? dan bagaimana gabungan ini LEFT JOIN, RIGHT JOIN
bekerja.
Jawaban:
Dokumentasi MySQL mencakup topik ini.
Berikut sinopsisnya. Saat menggunakan join
atau inner join
, on
kondisinya opsional. Ini berbeda dari standar ANSI dan berbeda dari hampir semua database lainnya. Efeknya adalah a cross join
. Demikian pula, Anda dapat menggunakan on
klausa with cross join
, yang juga berbeda dari SQL standar.
Gabungan silang menciptakan produk Kartesius - yaitu, setiap kemungkinan kombinasi 1 baris dari tabel pertama dan 1 baris dari tabel kedua. Gabungan silang untuk tabel dengan tiga baris ('a', 'b', dan 'c') dan tabel dengan empat baris (misalnya 1, 2, 3, 4) akan memiliki 12 baris.
Dalam prakteknya, jika Anda ingin melakukan cross join, gunakan cross join
:
from A cross join B
jauh lebih baik daripada:
from A, B
dan:
from A join B -- with no on clause
The on
klausul diperlukan untuk hak atau kiri luar bergabung, sehingga diskusi tidak relevan bagi mereka.
Jika Anda perlu memahami berbagai jenis gabungan, maka Anda perlu mempelajari beberapa basis data relasional. Stackoverflow bukanlah tempat yang tepat untuk tingkat diskusi tersebut.
Lihat beberapa contoh di http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Anda dapat menggunakan 'MENGGUNAKAN' alih-alih 'AKTIF' seperti dalam kueri
SELECT * FROM table1 LEFT JOIN table2 USING (id);
ON
klausa memberi tahu server bagaimana tabel terkait, tidak. Jika jenis gabungan Anda yang berbeda semuanya memberikan hasil yang sama, Anda salah melakukannya, dan menambahkan beberapa kode dapat membantu kami menemukan masalah Anda. Sementara itu, kunjungi blog Jeff Atwood untuk intro 2 menit tentang jenis gabungan yang berbeda.