Bagaimana cara menggunakan mysql JOIN tanpa kondisi ON?


106

Apakah mungkin untuk menulis query join tanpa ONpernyataan? dan bagaimana gabungan ini LEFT JOIN, RIGHT JOINbekerja.


1
Karena ONklausa 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.
fvu

Jawaban:


153

Dokumentasi MySQL mencakup topik ini.

Berikut sinopsisnya. Saat menggunakan joinatau inner join, onkondisinya opsional. Ini berbeda dari standar ANSI dan berbeda dari hampir semua database lainnya. Efeknya adalah a cross join. Demikian pula, Anda dapat menggunakan onklausa 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 onklausul 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.


1
Belum pernah mendengar tentang bergabung silang atau membutuhkan satu ... sampai hari ini!
pergi

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.