Menggunakan MySQl Joins
Pada bab sebelumnya, kami mendapatkan data dari satu tabel pada satu waktu. Ini cukup bagus untuk pengambilan sederhana, tetapi di sebagian besar penggunaan MySQL dunia nyata, Anda akan sering membutuhkan data dari beberapa tabel dalam satu kueri.
Anda dapat menggunakan beberapa tabel dalam satu kueri SQL Anda. Tindakan bergabung di MySQL mengacu pada penghancuran dua atau lebih tabel menjadi satu tabel.
Anda dapat menggunakan JOINS dalam pernyataan SELECT, UPDATE dan DELETE untuk menggabungkan tabel MySQL. Kita akan melihat contoh LEFT JOIN juga yang berbeda dari MySQL JOIN sederhana.
Menggunakan Bergabung di Command Prompt
Asumsikan kita memiliki dua tabel tcount_tbl dan tutorials_tbl, di TUTORIALS. Sekarang lihat contoh yang diberikan di bawah ini -
Contoh
Contoh berikut -
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * FROM tcount_tbl;
+-----------------+----------------+
| tutorial_author | tutorial_count |
+-----------------+----------------+
| mahran | 20 |
| mahnaz | NULL |
| Jen | NULL |
| Gill | 20 |
| John Poul | 1 |
| Sanjay | 1 |
+-----------------+----------------+
6 rows in set (0.01 sec)
mysql> SELECT * from tutorials_tbl;
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 1 | Learn PHP | John Poul | 2007-05-24 |
| 2 | Learn MySQL | Abdul S | 2007-05-24 |
| 3 | JAVA Tutorial | Sanjay | 2007-05-06 |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.00 sec)
mysql>
Sekarang kita dapat menulis kueri SQL untuk menggabungkan dua tabel ini. Kueri ini akan memilih semua penulis dari tabeltutorials_tbl dan akan mengambil sejumlah tutorial yang sesuai dari tcount_tbl.
mysql> SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count
-> FROM tutorials_tbl a, tcount_tbl b
-> WHERE a.tutorial_author = b.tutorial_author;
+-------------+-----------------+----------------+
| tutorial_id | tutorial_author | tutorial_count |
+-------------+-----------------+----------------+
| 1 | John Poul | 1 |
| 3 | Sanjay | 1 |
+-------------+-----------------+----------------+
2 rows in set (0.01 sec)
mysql>
Menggunakan Gabungan dalam Skrip PHP
Anda dapat menggunakan salah satu kueri SQL yang disebutkan di atas dalam skrip PHP. Anda hanya perlu meneruskan kueri SQL ke dalam fungsi PHPmysql_query() dan kemudian Anda akan mengambil hasil dengan cara biasa.
Contoh
Contoh berikut -
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count FROM tutorials_tbl a, tcount_tbl b WHERE a.tutorial_author = b.tutorial_author'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Author:{$row['tutorial_author']} <br> ".
"Count: {$row['tutorial_count']} <br> ". "Tutorial ID: {$row['tutorial_id']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
MySQL LEFT GABUNG
Gabung kiri MySQL berbeda dari gabungan sederhana. MySQL LEFT JOIN memberikan pertimbangan ekstra pada tabel di sebelah kiri.
Jika saya melakukan LEFT JOIN, Saya mendapatkan semua catatan yang cocok dengan cara yang sama dan SELAIN ITU saya mendapatkan catatan tambahan untuk setiap catatan yang tidak cocok di tabel kiri gabungan: sehingga memastikan (dalam contoh saya) bahwa setiap PENULIS mendapat sebutan.
Contoh
Coba contoh berikut untuk memahami LEFT JOIN.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count
-> FROM tutorials_tbl a LEFT JOIN tcount_tbl b
-> ON a.tutorial_author = b.tutorial_author;
+-------------+-----------------+----------------+
| tutorial_id | tutorial_author | tutorial_count |
+-------------+-----------------+----------------+
| 1 | John Poul | 1 |
| 2 | Abdul S | NULL |
| 3 | Sanjay | 1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)
Anda perlu melakukan lebih banyak latihan agar terbiasa dengan JOINS. Ini adalah konsep yang sedikit rumit di MySQL / SQL dan akan menjadi lebih jelas saat melakukan contoh nyata.