Saya ingin uraian singkat tentang tipe-tipe gabungan MySQL. Saya tahu ini, sisanya saya tidak yakin apa artinya.
- dipisahkan koma (apa tepatnya yang singkat ini untuk?):
SELECT * FROM a, b WHERE b.id = a.beeId AND ...
- tampilkan informasi dari a, meskipun tidak ada kecocokan di b:
SELECT * FROM a LEFT OUTER JOIN b ON b.id = a.beeId WHERE ...
Saya telah melihat bergabung lainnya, tetapi ingin tahu apa yang membuat mereka berbeda, apa INNER
/ OUTER
tidak menambahkan LEFT
perubahan
Saya sudah tahu bagaimana cara kerja joins, saya hanya ingin tahu apakah ada tipe joins yang lain, atau apakah mereka hanya cara yang berbeda untuk mendapatkan hasil yang sama.
Jawaban:
(c) Ditemukan di G + "Visualisasi Data"
atau lihat tautan berikut untuk ikhtisar yang bagus:
http://www.khankennels.com/blog/index.php/archives/2007/04/20/getting-joins/
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
sumber
cross join
, yang merupakan produk kartesius.There's also a cartesian product or cross join, which as far as I can tell, can't be expressed as a Venn diagram:
Berdasarkan komentar Anda, definisi sederhana dari masing-masing paling baik ditemukan di W3Schools . Baris pertama dari setiap jenis memberikan penjelasan singkat tentang tipe bergabung
AKHIR EDIT
Singkatnya, contoh dipisahkan koma yang Anda berikan
memilih setiap record dari tabel a dan b dengan koma yang memisahkan tabel, ini dapat digunakan juga dalam kolom seperti
Kemudian mendapatkan informasi yang diinstruksikan di baris di mana kolom b.id dan kolom a.beeId memiliki kecocokan dalam contoh Anda. Jadi pada contoh Anda, ia akan mendapatkan semua informasi dari tabel a dan b di mana b.id sama dengan a.beeId. Dalam contoh saya ini akan mendapatkan semua informasi dari tabel b dan hanya informasi dari kolom a.beeName ketika b.id sama dengan a.beeId. Perhatikan bahwa ada klausa AND juga, ini akan membantu mempersempit hasil Anda.
Untuk beberapa tutorial dan penjelasan sederhana tentang mySQL bergabung dan bergabung kiri lihat tutorial mySQL Tizag. Anda juga dapat memeriksa situs web Keith J. Brown untuk informasi lebih lanjut tentang gabungan yang cukup bagus.
Saya harap ini membantu Anda
sumber
Saya punya 2 tabel seperti ini:
INNER BERGABUNG peduli tentang kedua tabel
INNER BERGABUNG peduli tentang kedua tabel, sehingga Anda hanya mendapatkan baris jika kedua tabel memiliki satu. Jika ada lebih dari satu pasangan yang cocok, Anda mendapatkan beberapa baris.
Tidak ada bedanya dengan INNER BERGABUNG jika Anda membalikkan pesanan, karena itu peduli dengan kedua tabel:
Anda mendapatkan baris yang sama, tetapi kolom berada dalam urutan yang berbeda karena kami menyebutkan tabel dalam urutan yang berbeda.
KIRI BERGABUNG hanya peduli tentang tabel pertama
LEFT JOIN peduli tentang tabel pertama yang Anda berikan, dan tidak terlalu peduli tentang tabel kedua, jadi Anda selalu mendapatkan baris dari tabel pertama, bahkan jika tidak ada baris yang sesuai di tabel kedua:
Di atas Anda dapat melihat semua baris table_a meskipun beberapa dari mereka tidak cocok dengan apa pun di tabel b, tetapi tidak semua baris table_b - hanya baris yang cocok dengan sesuatu di table_a.
Jika kami membalik urutan tabel, LEFT JOIN berperilaku berbeda:
Sekarang kita mendapatkan semua baris table_b, tetapi hanya mencocokkan baris table_a.
BERGABUNG DENGAN BENAR hanya peduli tentang tabel kedua
a RIGHT JOIN b
memberi Anda baris yang persis sama denganb LEFT JOIN a
. Satu-satunya perbedaan adalah urutan default kolom.Ini adalah baris yang sama dengan
table_b LEFT JOIN table_a
yang kita lihat di bagian LEFT JOIN.Demikian pula:
Apakah baris yang sama dengan
table_a LEFT JOIN table_b
.Tidak bergabung sama sekali memberi Anda salinan segalanya
Klausa Tidak Gabung: Jika Anda menulis tabel tanpa klausa GABUNG sama sekali, hanya dipisahkan oleh koma, Anda mendapatkan setiap baris tabel pertama yang ditulis di sebelah setiap baris tabel kedua, dalam setiap kombinasi yang mungkin:
(Ini dari posting blog saya Contoh-contoh tipe join SQL )
sumber
Gabung Luar Penuh tidak ada di mysql, Anda mungkin perlu menggunakan kombinasi gabung kiri dan kanan.
sumber