PHP ดึงข้อมูล 3 ตารางมาแสดง ด้วย INNER JOIN บทความนี้สอนการใช้คำสั่ง INNER JOIN เพื่อจอยตาราง และดึงข้อมูล 3 ตารางมาแสดง ด้วยภาษา PHP ร่วมกับ MySQL/MariaDB สามารถเขียนโปรแกรมได้ดังนี้
ตัวอย่าง โครงสร้างตาราง book, category, author
ตาราง book
+---------+-------------+------------+-------------+-------------+
| book_id | book_name | book_price | book_cgy_id | book_ath_id |
+---------+-------------+------------+-------------+-------------+
| 1 | PHP & MySQL | 200.00 | 1 | 1 |
| 2 | Python | 220.00 | 1 | 1 |
| 3 | SQL | 280.00 | 2 | 2 |
| 4 | Java | 250.00 | 2 | 2 |
+---------+-------------+------------+-------------+-------------+
ตาราง category
+--------+-------------+
| cgy_id | cgy_name |
+--------+-------------+
| 1 | Programming |
| 2 | Networking |
+--------+-------------+
ตาราง author
+--------+----------+
| ath_id | ath_name |
+--------+----------+
| 1 | Mr.A |
| 2 | Mrs.B |
+--------+----------+
ตัวอย่าง PHP ดึงข้อมูล 3 ตารางมาแสดง ด้วย INNER JOIN
<?php
$con = mysqli_connect("localhost", "root", "", "demo");
mysqli_query( $con, "SET NAMES UTF8" );
$sql = "
SELECT book_id, book_name, cgy_name, ath_name
FROM book
INNER JOIN category ON ( book_cgy_id = cgy_id )
INNER JOIN author ON ( book_ath_id = ath_id )
";
$q = mysqli_query( $con, $sql );
while( $f = mysqli_fetch_assoc( $q ) ) {
echo $f['book_id']." ".$f['book_name']." / ".$f['cgy_name']." / ".$f['ath_name']."<br/>";
}
mysqli_close( $con );
?>
ผลลัพธ์
1 PHP & MySQL / Programming / Mr.A
2 Python / Programming / Mr.A
3 SQL / Networking / Mrs.B
4 Java / Networking / Mrs.B
PHP ดึงข้อมูล 3 ตารางมาแสดง พิจารณาโครงสร้างตารางได้ดังนี้ ตาราง book มี column book_cgy_id (FK) และ book_ath_id (FK) ไว้สำหรับเชื่อมกับ column cgy_id (PK) ของตาราง category และ ath_id (PK) ของตาราง author โดยคำสั่ง SQL มีความหมายดังนี้
1. SELECT book_id, book_name, cgy_name, ath_name คือ กำหนดชื่อ columns ที่จะแสดงด้วยคำสั่ง SELECT
2. FROM book คือ ใช้ตาราง book เป็นตารางหลักในการดึงข้อมูล
3. INNER JOIN category ON ( book_cgy_id = cgy_id ) คือ เชื่อมตาราง book กับ category ด้วย INNER JOIN โดย column book_cgy_id = cgy_id ถึงจะแสดงข้อมูล
4. INNER JOIN author ON ( book_ath_id = ath_id ) คือ เชื่อมตาราง book กับ author ด้วย INNER JOIN โดย column book_ath_id = ath_id ถึงจะแสดงข้อมูล