Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menggabungkan Dua Tabel di MySQL

Dalam angsuran sebelumnya dari seri MySQL ini, saya menunjukkan bagaimana Anda dapat mengambil data menggunakan klausa MySQL. Pada bagian ini kita akan belajar tentang fungsi Joins di MySQL, mengapa mereka digunakan dan bagaimana menggunakannya. Mari kita mulai.

Bagaimana Saya Dapat Menautkan Dua Tabel di MySQL

MySQL Joins memungkinkan Anda mengakses data dari beberapa tabel. MySQL Join dilakukan setiap kali dua atau lebih tabel digabungkan dalam pernyataan SQL. MySQL Joins meliputi:MySQL Inner Join (juga dikenal sebagai Simple Join), MySQL Left Outer Join (juga disebut Left Join, ini mengembalikan catatan yang cocok dari tabel kiri), Right Join (ini mengembalikan catatan yang cocok dari tabel kiri). tabel kanan), dan Gabung Penuh (ini mengembalikan catatan yang cocok dari semua tabel). Dengan menggunakan MySQL JOIN, Anda dapat menggabungkan lebih dari dua tabel.

Di MySQL, Gabung Dalam adalah Gabung Default. Pada kata kunci tertentu pada saat itu, ia memilih semua baris dari kedua tabel, selama ada koordinat antara kolom di kedua tabel.

Tidak seperti SQL, MySQL tidak menganggap Outer Join sebagai tipe Join yang terpisah. Untuk mendapatkan hasil yang sama dengan Gabung Luar, Anda harus bergabung dengan Gabung Luar Kiri dan Gabung Luar Kanan.

Berapa Banyak Tabel yang Dapat Digabung di MySQL

Menurut dokumentasi resmi MySQL 8.0, jumlah maksimum tabel dalam pernyataan JOIN adalah 61. Namun, perhatikan bahwa pernyataan JOIN dapat memerlukan banyak sumber daya server karena jumlah tabel meningkat. Jika demikian halnya dengan kueri Anda, saya sangat menyarankan untuk memecahnya menjadi beberapa kueri untuk mengurangi beban di server.

Mari kita mulai dengan menambahkan tabel baru di database kami yang akan berisi pesan bersama dengan ID pengguna yang telah mengirim pesan ini, kami akan menamainya pesan. Skema tabel kita adalah:

BUAT `pesan` TABEL (

 `id` int(11) BUKAN NULL,

 `message` varchar(255) NOT NULL

)

Kami akan menggunakan fungsi selectdata . yang sama yang telah kita buat di crud.php mengajukan. Sekarang mari kita mulai dengan menggabungkan dua tabel ini. Anda juga dapat mengisi meja Anda sehingga Anda dapat mempraktikkannya.


Berhenti Membuang Waktu di Server

Cloudways menangani manajemen server untuk Anda sehingga Anda dapat fokus membuat aplikasi hebat dan membuat klien Anda senang.

Mulai Gratis

Gabungan Dalam

Inner Join menggabungkan tabel sedemikian rupa sehingga hanya menampilkan hasil yang cocok dengan kondisi yang diberikan dan menyembunyikan yang lain. Struktur kueri Inner Join adalah:

PILIH nama_kolom

DARI tabel1

tabel INNER JOIN2

ON table1.column_name=table2.column_name;

Inner Join dan simple join keduanya sama. Anda juga dapat menulis kueri Anda seperti ini:

PILIH nama_kolom

DARI tabel1

JOIN table2

ON table1.column_name=table2.column_name;

Sekarang mari kita ambil Nama dan pesan dari database kita menggunakan Inner join. Querynya akan seperti ini

$sql = "SELECT CONCAT(myguests.firstname,' ',myguests.lastname) AS name, myguests.email, messages.message 
From myguests 
INNER JOIN messages 
ON myguests.id = messages.id";

CONCAT fungsi digunakan untuk menggabungkan dua kolom string di MySQL. Sekarang buka index.php Anda yang telah kita buat sebelumnya salin kode berikut di dalamnya.

<table>

	<tr>

		<td> &nbsp;&nbsp;Name</td>

		<td> &nbsp;&nbsp;Email</td>

		<td> &nbsp;&nbsp;Message</td>

		<!-- <td> &nbsp;&nbsp;Message</td>

		<td> &nbsp;&nbsp;Date</td>!-->

	</tr>

<?php

include 'crud.php';

$sql = "SELECT CONCAT(myguests.firstname,' ',myguests.lastname) AS name, myguests.email, messages.message 
		From myguests 
		INNER JOIN messages 
		ON myguests.id = messages.id";

$result = selectdata($sql);

	if($result != "zero")

	{

		while($row = $result->fetch_assoc())

		{

			echo "<tr>";

			echo "<td>" . $row['name'] . "</td>";

			echo "<td>" . $row['email'] . "</td>";

			if($row['message'] === null){echo "<td>" . &nbsp;'null'. "</td>";} else { echo "<td>" . &nbsp;$row['message']. "</td>"; } ;

			echo "</tr>";

		}

	}

	else

		{

			echo $result;

	}

?>

</table>

?>

Saat Anda menjalankan halaman ini di server hosting web PHP, hasilnya akan terlihat seperti ini:

Seperti yang dapat Anda lihat dengan jelas, itu hanya mengembalikan hasil yang cocok dengan user_id dan di mana pesan bukan nol.

KANAN GABUNG

RIGHT JOIN menggabungkan dua tabel sedemikian rupa sehingga mengembalikan semua nilai dari kanan dan nilai yang cocok dari tabel kiri dan juga mengembalikan null pada tabel kiri ketika tidak ditemukan kecocokan. Struktur untuk RIGHT JOIN adalah:

PILIH nama_kolom

DARI tabel1

KANAN GABUNG tabel2

ON table1.column_name=table2.column_name;

Sekarang mari kita ambil Nama dan pesan dari database kita membuat pesan di meja kanan kami dan tamu saya di meja kiri kami.

$sql = "SELECT CONCAT(myguests.firstname,' ',myguests.lastname) AS name, myguests.email, messages.message 
From myguests 
RIGHT JOIN messages 
ON messages.id = myguests.id";

Sekarang buka index.php dan ganti $sql pertanyaan dengan di atas. Saat Anda menjalankannya, hasilnya adalah:

Jika Anda melihat pesan tabel, Anda akan melihat beberapa ID yang tidak cocok dengan ID pengguna mana pun, itulah sebabnya kueri ini mengembalikan nol di kolom nama dan email yang tidak akan menemukan kecocokan di kolom kiri.

KIRI GABUNG

LEFT Joins menggabungkan dua tabel sedemikian rupa sehingga mengembalikan semua nilai dari kiri dan nilai yang cocok dari tabel kanan dan juga mengembalikan null pada tabel kanan ketika tidak ditemukan kecocokan. Struktur untuk LEFT JOIN adalah:

PILIH nama_kolom

DARI tabel1

KIRI GABUNG tabel2

ON table1.column_name=table2.column_name;

Sekarang mari kita ambil Nama dan pesan dari database kita membuat pesan di meja kanan kami dan tamu saya di meja kiri kami.

$sql = "SELECT CONCAT(myguests.firstname,' ',myguests.lastname) AS name, myguests.email, messages.message 
From myguests 
LEFT JOIN messages 
ON messages.id = myguests.id";

Sekarang buka index.php dan query sebagai ganti $sql dengan di atas. Saat Anda menjalankannya, hasilnya adalah:

Jika Anda melihat pesan tabel, Anda akan menemukan beberapa ID yang tidak cocok dengan ID pengguna mana pun, itulah sebabnya kueri ini mengembalikan null di kolom Pesan yang tidak akan menemukan kecocokan di kolom kanan.

UNION

UNION di MySQL digunakan untuk menyatukan beberapa kolom dari tabel yang berbeda menjadi satu kolom. Struktur kueri UNION untuk memilih nilai unik adalah:

PILIH nama_kolom DARI tabel1

PERSATUAN

SELECT column_name(s) FROM table2;

Dan untuk memilih nilai berulang dari kolom adalah:

PILIH nama_kolom DARI tabel1

SERIKAT SEMUA

SELECT column_name(s) FROM table2;

Sekarang mari kita ambil ID dari tabel kita.

$sql = "SELECT id FROM myguests 
UNION 
SELECT id FROM messages";

Sekarang buka index.php dan ganti $sql pertanyaan dengan di atas. Saat Anda menjalankannya, hasilnya adalah:

Kueri telah mengambilkan kami semua ID unik yang ditemukan di kedua tabel.

Cross JOIN atau Produk Cartesian

Jenis GABUNG ini mengembalikan produk kartesius baris dari tabel di Gabung. Ini akan mengembalikan tabel yang terdiri dari record yang menggabungkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua.

Sintaks Cross JOIN adalah,

SELECT column-name-list

from table-name1

CROSS JOIN

table-name2;

Self JOIN

Self JOIN adalah join biasa, tetapi tabel bergabung dengan dirinya sendiri.

SELECT column_name(s)

FROM table1 T1, table1 T2

WHERE condition;

GABUNG LUAR PENUH

Kata kunci FULL OUTER JOIN mengembalikan semua record ketika ada kecocokan pada record tabel kiri (table1) atau kanan (table2).

Catatan:FULL OUTER JOIN berpotensi mengembalikan kumpulan hasil yang sangat besar!

SELECT column_name(s)

FROM table1

FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

Bergabung dengan Beberapa Tabel

Di blog sebelumnya, Anda telah mempelajari cara menggabungkan dua tabel menggunakan kueri gabungan SQL yang berbeda. Tetapi jika Anda sedang mengerjakan aplikasi besar yaitu membangun toko e-niaga dan membuat beberapa tabel di dalamnya seperti pelanggan, pesanan, dan produk, kerumitan dalam menggabungkan tabel pasti dapat muncul. Untuk mengatasinya, Anda perlu mendapatkan semua produk yang dipesan oleh pelanggan tertentu. Skemanya tetap sama, jadi saya tidak menyatakannya di sini. Mari kita lihat kuerinya:

SELECT * FROM table1

LEFT JOIN table2

ON table2.id = table1.id

LEFT JOIN table3

ON table3.id = table1.id

Kami pertama menggabungkan tabel 1 dan tabel 2 yang memberikan tabel sementara dengan data gabungan dari tabel1 dan tabel2, yang kemudian digabungkan ke tabel3. Persamaan ini dapat diperluas hingga lebih dari 3 tabel menjadi N tabel, Anda hanya perlu memastikan bahwa query SQL harus memiliki N-1 pernyataan join dalam arrange to join N tabel.

Kueri di atas akan memungkinkan Anda untuk mencocokkan baris dari tabel1 (dalam kasus apa pun) ke baris dari dua tabel lainnya. Menggunakan LEFT JOIN memungkinkan Anda untuk menggabungkan table2 dan table3 dengan table1 (tidak hanya table2 dengan table1 dan table3 dengan table2).
Anda juga dapat menambahkan kondisi seperti WHERE, AND, dan ORDERBY

SELECT * FROM table1

LEFT JOIN table2

   ON table2.id = table1.id

LEFT JOIN table3

   ON table3.id = table2.id

WHERE month = 'numberHere'

   AND (table2.email IS NOT NULL OR table3.email IS NOT NULL)

ORDER BY submitdate DESC

Kesimpulan:

Dalam tutorial ini, kita belajar tentang join yang banyak digunakan dalam database relasional. Gabung tidak hanya digunakan untuk dua tabel saja dan Anda dapat menggabungkan lebih dari dua tabel menggunakan teknik yang sama. Dalam angsuran kedelapan dan terakhir dari seri MySQL ini, saya akan membahas cara menggunakan Regular Expressions (REGEX) untuk mengambil dan menyortir data di MySQL. Untuk itu, berlangganan buletin blog kami dan Anda juga dapat mendaftar ke Managed PHP Stack kami dan mulai menguji tutorial ini di server kami yang dioptimalkan PHP.

Pertanyaan yang Sering Diajukan

Q. Bagaimana cara menggabungkan dua tabel?

Jawab: Menggabungkan dua tabel dalam SQL dapat dilakukan dengan empat cara utama:Inner Join (mengembalikan baris dengan kolom yang cocok), Left Join (SEMUA record di tabel kiri dan record yang cocok di tabel kanan), Right Join (ALL record di tabel kanan). dan catatan yang cocok di tabel kiri), dan Union (menghapus duplikat).

Q. Perintah SQL apa yang dapat Anda gunakan untuk menggabungkan dua tabel?

Jawab: Dua tabel dapat digabungkan menggunakan pernyataan INNER JOIN yang mengembalikan record yang cocok dari kedua tabel.

Q. Bagaimana cara menggabungkan dua tabel dalam SQL tanpa bergabung?

Jawab: Anda dapat menggunakan pernyataan berikut untuk menggabungkan tabel tanpa benar-benar menggunakan pernyataan JOIN

SELECT *

FROM TableA a, TableB b


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menerapkan Komentar dan Suka di database

  2. Bagaimana cara mengubah string menjadi tanggal di MySQL?

  3. Bagaimana cara menguji apakah kueri MySQL berhasil memodifikasi data tabel database?

  4. Cara Menghapus Batasan Not Null di MySQL

  5. Ubah batas untuk ukuran Baris Mysql terlalu besar