MySQLi - การใช้การเข้าร่วม
จนถึงตอนนี้เราได้รับข้อมูลจากตารางครั้งละหนึ่งตารางเท่านั้น สิ่งนี้ใช้ได้ดีสำหรับการใช้งานง่ายๆ แต่ในโลกแห่งความเป็นจริงการใช้งาน MySQL ส่วนใหญ่คุณมักจะต้องได้รับข้อมูลจากหลายตารางในแบบสอบถามเดียว
คุณสามารถใช้หลายตารางในแบบสอบถาม SQL เดียวของคุณ การเข้าร่วมใน MySQLi หมายถึงการรวมตารางสองตารางขึ้นไปให้เป็นตารางเดียว
คุณสามารถใช้ JOINS ในคำสั่ง SELECT, UPDATE และ DELETE เพื่อเข้าร่วมตาราง MySQLi เราจะเห็นตัวอย่างของ LEFT JOIN ซึ่งแตกต่างจาก MySQLi JOIN แบบธรรมดา
ใช้ Joins ที่ Command Prompt
สมมติว่าเรามีสองโต๊ะ tutorials_bks และ tutorials_infใน TUTORIALS รายชื่อที่สมบูรณ์ได้รับด้านล่าง -
ตัวอย่าง
ลองดูตัวอย่างต่อไปนี้ -
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>
ตอนนี้เราสามารถเขียนแบบสอบถาม SQL เพื่อรวมสองตารางนี้ได้ แบบสอบถามนี้จะเลือกชื่อทั้งหมดจากตารางtutorials_inf และจะรับจำนวนบทเรียนที่เกี่ยวข้องจากtutorials_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>
ในตาราง tutorials_bks เรามี 5 ระเบียน แต่ในตัวอย่างข้างต้นจะกรองและให้เพียง 4 ระเบียน id ตามแบบสอบถาม
การใช้ Joins ใน PHP Script
คุณสามารถใช้แบบสอบถาม SQL ที่กล่าวถึงข้างต้นในสคริปต์ PHP คุณจะต้องส่งแบบสอบถาม SQL ไปยังฟังก์ชัน PHP เท่านั้นmysqli_query() จากนั้นคุณจะดึงผลลัพธ์ตามปกติ
ตัวอย่าง
ลองใช้ตัวอย่างต่อไปนี้ -
<?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);
?>
ผลลัพธ์ตัวอย่างควรเป็นดังนี้ -
Connected successfully
id name id
1 sai 1
2 johar 2
3 raghu 3
4 ram 4
MySQL ซ้ายเข้าร่วม
การเข้าร่วม MySQLi จะแตกต่างจากการเข้าร่วมแบบธรรมดา MySQLi LEFT JOIN ให้การพิจารณาเป็นพิเศษกับตารางทางด้านซ้าย
ถ้าฉันทำการเข้าร่วมทางซ้ายฉันจะได้รับระเบียนทั้งหมดที่ตรงกันในลักษณะเดียวกันและในส่วนเพิ่มเติมฉันจะได้รับบันทึกพิเศษสำหรับแต่ละระเบียนที่ไม่ตรงกันในตารางด้านซ้ายของการเข้าร่วม - ดังนั้นจึงมั่นใจได้ว่า (ในตัวอย่างของฉัน) ทุกชื่อจะได้รับ พูดถึง -
ตัวอย่าง
ลองใช้ตัวอย่างต่อไปนี้เพื่อทำความเข้าใจ 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;
คุณจะต้องฝึกฝนให้มากขึ้นเพื่อทำความคุ้นเคยกับ JOINS นี่เป็นแนวคิดที่ซับซ้อนเล็กน้อยใน MySQL / SQL และจะชัดเจนยิ่งขึ้นในขณะที่ทำตัวอย่างจริง