Sertai Tiga Jadual dalam SQL

Sertai Tiga Jadual Dalam Sql



Dalam pangkalan data hubungan, tugas untuk mendapatkan semula data daripada berbilang jadual adalah sangat biasa. Bergantung pada hasil sasaran, ini melibatkan penggabungan berbilang jadual ke dalam satu unit dan mengambil data yang terhasil.

Apabila ia datang untuk menyertai, kebanyakan kita kebanyakannya bekerja dengan had dua jadual dan sebagainya. Walau bagaimanapun, adalah perkara biasa untuk perlu menyertai tiga jadual untuk mendapatkan susun atur dan cerapan data yang lebih bermakna. Ambil contoh di mana anda ingin mendapatkan semula senarai filem, inventori sewaan yang sepadan dan butiran sewaan sebenar. Setiap unit ini seperti filem, inventori dan butiran sewaan terdapat dalam jadual individu.

Dalam tutorial ini, kami akan membimbing anda melalui pelbagai cantuman dan teknik yang boleh anda gunakan untuk menyertai tiga jadual dalam SQL.







Keperluan:

Untuk tujuan demonstrasi, kami akan menggunakan MySQL versi 80 dan pangkalan data sampel Sakila. Untuk mengikutinya, anda boleh memuat turun dan menyediakan pangkalan data Sakila dalam pelayan MySQL anda. Jangan ragu untuk menggunakan mana-mana set data lain yang anda anggap sesuai.



Jenis Gabungan dalam SQL

Sebelum kita sampai ke aplikasi cantuman, mari kita mulakan dengan membincangkan pelbagai jenis cantuman yang tersedia dalam pangkalan data SQL.



SERTAI DALAM

Jenis join pertama ialah INNER JOIN. Jenis gabungan ini hanya mengembalikan baris yang mengandungi nilai yang sepadan dalam kedua-dua jadual. Ia adalah jenis cantuman yang sangat biasa dan paling mudah apabila menyertai dua jadual.





Sintaksnya adalah seperti berikut:

PILIH lajur

DARI jadual1

Jadual2 JOIN DALAM HIDUP table1.column_name = table2.column_name;

KIRI SERTAI

Dalam kes LEFT JOIN, ia mengembalikan semua baris dari jadual kiri dan baris yang dipadankan dari jadual kanan. Jika tiada nilai yang sepadan dari jadual yang betul, gabungan menambah nilai NULL di tempatnya.



Sintaksnya adalah seperti berikut:

PILIH lajur

DARI jadual1

KIRI SERTAI jadual2 HIDUP table1.column_name = table2.column_name;

BETUL SERTAI

Seperti yang anda boleh teka, JOIN KANAN adalah bertentangan dengan JOIN KIRI. Jenis cantuman ini mengembalikan semua baris dari jadual kanan dan hanya baris yang sepadan dari jadual kiri. Jika tiada baris yang sepadan pada jadual kiri, gabungan menambah nilai NULL kepadanya.

Berikut ialah sintaks RIGHT JOIN:

PILIH lajur

DARI jadual1

KANAN SERTAI jadual2 HIDUP table1.column_name = table2.column_name;

SERTAI LUAR PENUH

Jenis gabungan seterusnya yang anda akan temui dalam pangkalan data SQL ialah FULL OUTER JOIN. Gabungan jenis ini mengembalikan semua baris apabila terdapat padanan sama ada dalam jadual kanan atau kiri. Jika tiada nilai padanan dalam salah satu daripada dua, ia mengembalikan NULL untuk lajur daripada jadual tanpa padanan.

Berikut menunjukkan sintaks FULL OUTER JOIN:

PILIH lajur

DARI jadual1

FULL OUTER JOIN jadual2 HIDUP table1.column_name = table2.column_name;

Adalah baik untuk diingat bahawa tidak semua enjin pangkalan data menyokong FULL OUTER JOINS. Untuk mencapainya, anda mungkin perlu bekerja dengan jenis JOINS atau subquery lain.

Contoh:

Mari kita terokai beberapa contoh tentang cara kita boleh menggunakan jenis cantuman ini untuk menyertai tiga jadual dalam SQL.

Contoh 1: Menggunakan INNER JOIN

Kita mulakan dengan INNER JOIN. Katakan kami ingin mendapatkan semula senarai filem, inventori sewaan dan butiran sewaan yang sepadan.

Kita boleh menggunakan berbilang INNER JOINS pada jadual yang berkaitan seperti yang ditunjukkan dalam contoh berikut:

PILIH

filem.tajuk,

inventory.inventory_id,

rental.rental_date

DARI

filem

INNER JOIN inventori HIDUP

film.film_id = inventori.film_id

Penyewaan INNER JOIN HIDUP

inventory.inventory_id = sewa.inventory_id;

Dalam contoh pertanyaan yang diberikan, kami mulakan dengan menyertai jadual filem dan inventori berdasarkan lajur 'id_filem'. Kami kemudian mengambil set yang terhasil dan bergabung dengan jadual sewa berdasarkan lajur 'inventory_id'.

Ini memastikan kami menyertai tiga jadual dengan asas INNER JOIN. Set yang terhasil adalah seperti berikut:

Contoh 2: Menggunakan INNER JOIN dan LEFT JOIN

Katakan sekarang kami mahukan senarai filem, senarai inventori sewaan (jika ada), dan butiran sewaan yang berkaitan.

Kami juga ingin memastikan bahawa walaupun filem tidak mempunyai inventori sewaan, kami masih memasukkannya dalam hasilnya. Di sinilah SERTAI DALAM dan SERTAI KIRI berperanan.

Pertimbangkan contoh berikut:

PILIH

filem.tajuk,

inventory.inventory_id,

rental.rental_date

DARI

filem

INNER JOIN inventori HIDUP

film.film_id = inventori.film_id

LEFT JOIN sewaan HIDUP

inventory.inventory_id = sewa.inventory_id;

Dalam contoh ini, kami menggunakan INNER JOIN untuk menyertai filem dan jadual inventori bagi memastikan kami mendapat tajuk dengan inventori yang tersedia. Kami kemudian menggunakan LEFT JOIN untuk menyertai jadual sewaan untuk mengambil butiran sewaan jika tersedia dan NULL untuk sebarang tajuk yang tidak mempunyai sejarah sewaan.

Set yang terhasil adalah seperti berikut:

Kesimpulan

Dalam tutorial ini, kami mempelajari tentang pelbagai jenis JOINS dalam SQL, cara ia berfungsi dan cara kami boleh menggunakannya untuk menggabungkan tiga jadual.