โดยสิ่งแรกเราจะของพูดถึงทำไมเราถึงต้องใช้การ Join
การ join นั้นเป็นเหมือนกันเอาข้อมูลจาก 2 table มารวมกันโดยมีเงื่อนไข รวมกันแบบไหนหรอ ก็คือการรวม คอลั่มกันเช่นถ้าหากเราไม่กำหนดเงื่อนไขในการ join ก็จะเป็นการเอา table ที่ 1 ที่มี 3 คอลั่ม และ table ที่ 2 มีอีก 3 คอลั่ม เมื่อเอามารวมกันเลยก็จะเป็น 6 คอลั่ม ซึ่งคอลั่มนั้นไม่เกี่ยวกับของตัวข้อมูลที่เป็น rows ซึ่งเราจะยังไม่พูดถึง การทำแบบนี้ก็ทำเพื่อให้เราสามารถรวมตารางออกมาเป็นตารางเดียวได้ ในการ select ครั้งเดียวซึ่งการ join นั้นสามารถทำได้หลายแบบดังนี้
ตัวอย่าง database
ตาราง ลูกค้า
มี user ID {1,2,3,4}
มี name {A,B,C,D}
มี lastname {AA,BB,CC,DD} ตามลำดับ
ตาราง ใบสั่งซื้อ
มี order ID {1,2,3}
มี userID {3,2,4} ตามลำดับ
การ inner join
การ Inner join นั้นเป็นเหมือนการเอาข้อมูลที่เฉพาะส่วนที่ ข้อมูลใน rows นั้นตรงกันเช่น เราต้องการให้ join ตารางลูกค้าที่ทำการสั่งซื้อของ
โดยโค้ด sql ที่จะใช้นั้นก็คือ
โค้ด: เลือกทั้งหมด
SELECT order.orderID, user.name FROM user INNER JOIN Order ON order.userID = user.userID;
การ left join นั้นเป็นการเอาข้อมูลที่อยู่ทางด้านซ้ายเป็นหลักในการแสดงข้อมูลหรือก็คือข้อมูลทุก rows ที่อยู่ใน table ด้าน ซ้ายนั้นจะถูกแสดงทุก rows ถึงแม้ว่ามันจะไม่เหมือนกับด้านขวาก็ตาม เช่น
โค้ด: เลือกทั้งหมด
SELECT user.username,ordertable.orderID FROM user LEFT JOIN ordertable ON ordertable.userID = user.userID;
การ right join นั้นก็เหมือนกับตัวของ left join เพียงแต่กลับด้านกันเฉยๆ ข้อมูลใน rows ด้านขวาจะถูกแสดงออกมาทุก rows แม้ว่า ทางซ้ายจะไม่ตรงหรือไม่มีก็ตาม
โค้ด: เลือกทั้งหมด
SELECT ordertable.orderID,user.username FROM user RIGHT JOIN ordertable ON ordertable.userID = user.userID;
อ้างอิง
https://www.w3schools.com/sql/sql_join.asp
https://www.w3schools.com/sql/sql_join_inner.asp
https://www.w3schools.com/sql/sql_join_left.asp
https://www.w3schools.com/sql/sql_join_right.asp