Latest web development tutorials

Menggunakan koneksi Mysql

Dalam bab-bab sebelumnya, kita telah belajar bahwa jika membaca data dalam tabel, yang relatif sederhana, tetapi sering perlu membaca data dari beberapa tabel dalam aplikasi nyata.

bab ini kami akan menunjukkan bagaimana menggunakan MySQL BERGABUNG query data dalam dua atau lebih tabel.

Anda dapat menggunakan Mysql di SELECT, UPDATE, dan DELETE laporan ke BERGABUNG bersama query multi-tabel.

BERGABUNG menurut fungsinya dibagi menjadi tiga kategori berikut:

  • (Koneksi internal, atau koneksi setara) INNER JOIN: Dapatkan rekor dua field dalam tabel pertandingan hubungan.
  • LEFT JOIN (koneksi kiri): Dapatkan semua catatan dari tabel kiri, tabel kanan, bahkan jika tidak ada catatan yang cocok sesuai.
  • RIGHT JOIN (koneksi kanan): Berbeda dengan LEFT JOIN, mendapatkan meja yang tepat untuk semua catatan, bahkan jika tabel kiri tidak memiliki catatan yang cocok sesuai.

struktur database dan data yang digunakan dalam bagian ini Download: w3big.sql .


Gunakan INNER JOIN command prompt

Kami memiliki dua tabel tcount_tbl dan w3big_tbl dalam database w3big. Dua Data Data tabel adalah sebagai berikut:

contoh

Coba contoh berikut:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT * FROM tcount_tbl;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
| John Poul       |              1 |
| Sanjay          |              1 |
+-----------------+----------------+
6 rows in set (0.01 sec)
mysql> SELECT * from w3big_tbl;
+-------------+----------------+-----------------+-----------------+
| w3big_id | w3big_title | w3big_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>

Selanjutnya kita datang untuk menghubungkan lebih dari dua tabel dalam tabel untuk membaca w3big_tbl semua bidang w3big_author nilai bidang w3big_count sesuai dengan tabel di tcount_tbl menggunakan MySQL INNER JOIN (penggunaan dapat dihilangkan INNER JOIN, efek yang sama):

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-----------+---------------+--------------+
| w3big_id | w3big_author | w3big_count |
+-----------+---------------+--------------+
|         1 | John Poul     |            1 |
|         3 | Sanjay        |            1 |
+-----------+---------------+--------------+
2 rows in set (0.00 sec)

Di atas pernyataan SQL adalah setara dengan:

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a, tcount_tbl b WHERE a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
2 rows in set (0.01 sec)
mysql>


MySQL LEFT JOIN

MySQL meninggalkan bergabung dan bergabung berbeda. MySQL LEFT JOIN akan membaca semua data tabel data di sebelah kiri, sisi kanan meja bahkan jika tidak ada data yang sesuai.

contoh

Coba contoh berikut, meja kiri w3big_tbl, tcount_tbl tabel kanan, untuk memahami MySQL KIRI BERGABUNG aplikasi:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a LEFT JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

Contoh di atas menggunakan LEFT JOIN, pernyataan membaca semua data lapangan yang dipilih ke kiri w3big_tbl tabel data, bahkan jika tidak ada tangan kanan tcount_tbl tabel sesuai nilai bidang w3big_author.


MySQL RIGHT JOIN

MySQL RIGHT JOIN membaca semua data di sebelah kanan tabel data di sisi kiri dari meja bahkan jika tidak ada data yang sesuai.

contoh

Coba contoh berikut, tcount_tbl meja kiri, w3big_tbl tabel kanan, untuk memahami MySQL RIGHT JOIN aplikasi:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT b.w3big_id, b.w3big_author, a.w3big_count FROM tcount_tbl a RIGHT JOIN w3big_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

Contoh di atas menggunakan KANAN JOIN, pernyataan membaca semua data lapangan yang dipilih ke kanan w3big_tbl tabel data, bahkan jika tidak ada tabel terkait di tcount_tbl kiri nilai bidang w3big_author.


BERGABUNG digunakan dalam skrip PHP

Penggunaan PHP mysql_query () fungsi untuk mengeksekusi pernyataan SQL, Anda dapat menggunakan lebih dari pernyataan SQL yang sama seperti mysql_query () parameter fungsi.

Coba 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.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author';

mysql_select_db('w3big');
$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['w3big_author']}  <br> ".
         "Count: {$row['w3big_count']} <br> ".
         "Tutorial ID: {$row['w3big_id']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>