MySQLi - Menggunakan Gabungan

Sejauh ini, kami hanya mendapatkan data dari satu tabel pada satu waktu. Ini bagus untuk pengambilan sederhana, tetapi di sebagian besar penggunaan MySQL dunia nyata, Anda sering perlu mendapatkan data dari beberapa tabel dalam satu kueri.

Anda dapat menggunakan beberapa tabel dalam satu kueri SQL Anda. Tindakan bergabung di MySQLi mengacu pada menghancurkan dua tabel atau lebih menjadi satu tabel.

Anda dapat menggunakan JOINS dalam pernyataan SELECT, UPDATE dan DELETE untuk menggabungkan tabel MySQLi. Kita akan melihat contoh LEFT JOIN juga yang berbeda dari MySQLi JOIN sederhana.

Menggunakan Bergabung di Command Prompt

Misalkan kita memiliki dua tabel tutorials_bks dan tutorials_inf, di TUTORIALS. Daftar lengkap diberikan di bawah ini -

Contoh

Coba contoh berikut -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * FROM tcount_bks;
+----+---------+
| id | book    |
+----+---------+
|  1 | java    |
|  2 | java    |
|  3 | html    |
|  4 | c++     |
|  5 | Android |
+----+---------+
5 rows in set (0.00 sec)

mysql> SELECT * from tutorials_inf;
+----+-------+
| id | name  |
+----+-------+
|  1 | sai   |
|  2 | johar |
|  3 | raghu |
|  4 | ram   |
+----+-------+
4 rows in set (0.00 sec)

mysql>

Sekarang kita dapat menulis kueri SQL untuk menggabungkan dua tabel ini. Kueri ini akan memilih semua nama dari tabeltutorials_inf dan akan mengambil sejumlah tutorial yang sesuai daritutorials_bks.

mysql> SELECT a.id, a.name,b.id FROM tutorials_inf a,tutorials_bks b WHERE a.id = b.id;
+----+-------+----+
| id | name  | id |
+----+-------+----+
|  1 | sai   |  1 |
|  2 | johar |  2 |
|  3 | raghu |  3 |
|  4 | ram   |  4 |
+----+-------+----+
4 rows in set (0.00 sec)
mysql>

Dalam tabel tutorials_bks, kami memiliki 5 catatan tetapi dalam contoh di atas itu memfilter dan hanya memberikan 4 catatan id sesuai permintaan

Menggunakan Bergabung dalam Script PHP

Anda dapat menggunakan salah satu kueri SQL yang disebutkan di atas dalam skrip PHP. Anda hanya perlu meneruskan kueri SQL ke dalam fungsi PHPmysqli_query() dan kemudian Anda akan mengambil hasil dengan cara biasa.

Contoh

Coba contoh berikut -

<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = '';
   $dbname = 'TUTORIALS';
   $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
   
   if(! $conn ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully</br>';
   $sql = 'SELECT a.id, a.name,b.id FROM tutorials_inf a,tutorials_bks b WHERE a.id = b.id';
   
   if($result = mysqli_query($conn, $sql)) {
      if(mysqli_num_rows($result) > 0) {
         echo "<table>";
         echo "<tr>";
         echo "<th>id</th>";
         echo "<th>name</th>";
         echo "<th>id</th>";
         echo "</tr>";
         
         while($row = mysqli_fetch_array($result)){
            echo "<tr>";
            echo "<td>" . $row['id'] . "</td>";
            echo "<td>" . $row['name'] . "</td>";
				echo "<td>" . $row['id'] . "</td>";
            echo "</tr>";
         }
         echo "</table>";
         mysqli_free_result($result);
      } else {
         echo "No records matching your query were found.";
      }
   } else {
      echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
   }
   mysqli_close($conn);
?>

Output sampel harus seperti ini -

Connected successfully
id	name	id
1	sai	1
2	johar	2
3	raghu	3
4	ram	4

MySQL LEFT JOIN

Gabung kiri MySQLi berbeda dari gabungan sederhana. MySQLi LEFT JOIN memberikan pertimbangan ekstra pada tabel di sebelah kiri.

Jika saya melakukan LEFT JOIN, saya mendapatkan semua record yang cocok dengan cara yang sama dan SELAIN ITU saya mendapatkan record ekstra untuk setiap record yang tidak cocok di tabel kiri join - sehingga memastikan (dalam contoh saya) bahwa setiap nama mendapat a sebutkan -

Contoh

Cobalah contoh berikut untuk memahami LEFT JOIN -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql>SELECT a.id, a.name,b.id FROM tutorials_inf a LEFT JOIN tutorials_bks b ON a.id = b.id;

Anda perlu melakukan lebih banyak latihan agar terbiasa dengan JOINS. Ini adalah konsep yang agak rumit di MySQL / SQL dan akan menjadi lebih jelas saat melakukan contoh nyata.