Powered By Blogger

วันอังคารที่ 11 มกราคม พ.ศ. 2554

SQL Mysql MSSQL ORACLE mindphp บันทึก คำสั่ง sql Select ข้อมูลสองตาราง Mysql ใช้ได้ กับ Sql มาตรฐาน ใช้การ Joins

คำสั่ง sql Select ข้อมูลสองตาราง Mysql ใช้ได้ กับ Sql มาตรฐาน ใช้การ Joins

สมมุต มี ตารางสองตางราง มีโครงสร้าง และข้อมูลดังนี้
Employees:
Employee_ID Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari
Orders:
Prod_ID Product Employee_ID
234 Printer 01
657 Table 03
865 Chair 03

โดยที่ ตาราง Orders มี field Employee_ID เป็น Foreign Key เป็น Key ที่ใช้ เชื่อม ระหว่างตาราง Orders กับ ตาราง Employees โดยที่ ตารางลูกค้า(Employees) จะมี field รหัสลูกค้า(Employee_ID) เป็น keyหลัก
จากสอง ตารางดังกล่าวเป็นความสัมพันธ์ แบบ 1:N (One-to-Many) เนื่องจากลูกค้า 1 คนสามารถมีรายการสั่งสินค้าได้หลาย รายการ
ถ้าเราจะดึงข้อมูลจากสอง ตารางนี้มาแสดง ทำได้ สองวิธีคือ
วิธีที่ 1. ใช้การ referring จากสอง ตาราง
sql---> SELECT Employees.Name, Orders.Product FROM Employees, Orders WHERE Employees.Employee_ID=Orders.Employee_ID
อธิบาย--> เราจะใช้ Employee_ID เป็นตัวอ้างถึงจากสอง ตาราง และ การเลือก field ก็ต้องบอกด้วย ชื่อตาราง.ชื่อ field
ผล--->
Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

วิธีที่ 2. ใช้การ Joins กันของ สองตาราง
Syntax---> SELECT field1, field2, field3 FROM first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield
sql----> SELECT Employees.Name, Orders.Product FROM Employees INNER JOIN Orders ON Employees.Employee_ID=Orders.Employee_ID

อธิบาย--> เราจะใช้ INNER JOIN เข้ามาช่วยเพื่อบอกว่า เราจะเชื่อม ตารางสอง ตางราง และใช้ Foreign Key เป็นตัวอ้างถึงสองตาราง ที่มีความ สัมพันธ์ กัน
ผล-->
Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair