เชื่อมโยง mysql 3 ตาราง
ก่อนอื่นต้องดูด้วยว่า เราต้องการทำการ JOIN แบบไหน เพื่อให้ได้ผลลัพธ์ ตามที่ต้องการด้วยน่ะครับ ซึ่ง
ประเภทของการ JOIN ใน SQL Server ประกอบไปด้วย
INNER JOIN
OUTER JOIN
CROSS JOIN
SELF JOIN
INNER JOIN
เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกันโดยอาศัยคอลัมน์ ที่มีความสัมพันธ์กันมาทำการเชื่อมโยงข้อมูลเข้าด้วยกัน การเชื่อมโยงนี้จะมีการตรวจสอบข้อมูลในคอมลัมน์ที่ใช้เป็นเงื่อนไขการเชื่อมโยงของ ตารางทั้ง 2 โดยจะแสดงข้อมูลจากตารางทั้ง 2 เฉพาะที่มีเงื่อนไขของข้อมูลที่ตรงกันเท่านั้น
SELECT kk_customer.coust_no,kk_customer.cust_name,kk_coust.contact_name,kk_coustmer.emp_no,kk_employee.emp_name
FROM kk_coustomer INNER JOIN kk_employee ON
kk_customer.emp_no = kk_employee.emp_no
OUTER JOIN
OUTER JOIN เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน ผลการเชื่อมจะยึดตามตารางใดตารางหนึ่งที่กำหนด หรือจะเป็นการนำรายการของตารางทั้งหมดมารวมกัน ประกอบไปด้วย
- LEFT [OUTER] JOIN เชื่อมข้อมูลโดยยีดตารางด้านซ้ายมือของคำสั่งเป็นหลัก
- RIGHT [OUTER] JOIN เชื่อมข้อมูลโดยยึดตารางด้านขวาของคำสั่งเป็นหลัก
- FULL [OUTER] JOIN เชื่อมข้อมูลของตารางทางด้านขวาและซ้ายเข้าด้วยกัน
LEFT OUTER JOIN เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน โดยอาศัยคอลัมน์ ที่มีความสัมพันธ์กันมาทำการเชื่อมโยงข้อมูลเข้าด้วยกัน การเชื่อมโยงนี้จะมีการตรวจสอบข้อมูลในคอลัมน์ที่ใช้เป็นเงื่อนไขการเชื่อมโยงของตารางทั้ง 2 โดยจะแสดงแถวข้อมูลจากตารางด้านซ้ายมือของคำสั่ง (ตารางที่ถูกประกาศก่อน) ทั้งหมด และตารางทางด้านขวามือ (ตารางที่ถูกประกาศที่หลัง) จะแสดงเฉพาะแถวที่มีเงื่อนไขของข้อมูลตรงกันกับตารางทางฝั่งขวามือเท่านั้น
SELECT * FROM Table_A LEFT OUTER JOIN Table_B NO Table_A.ColumnA1 = Table_B.ColumnB1
RIGHT OUTER JOIN เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน โดยอาศัยคอลัมน์ ที่มีความสัมพันธ์กันมาทำการเชื่อมโยงข้อมูลเข้าด้วยกัน การเชื่อมโยงนี้จะมีการตรวจสอบข้อมูลในคอลัมน์ที่ใช้เป็นเงื่อนไขการเชื่อมโยงของตารางทั้ง 2 โดยจะแสดงแถวข้อมูลจากตารางด้านขวามือของคำสั่ง (ตารางที่ถูกประกาศที่หลัง) ทั้งหมด และตารางทางด้านซ้ายมือ (ตารางที่ถูกประกาศที่ก่อน) เฉพาะที่มีเงื่อนไขของข้อมูลตรงกันเท่านั้น
SELECT * FROM Table_A RIGHT OUTER JOIN Table_B NO Table_A.ColumnA1 = Table_B.ColumnB1
FULL OUTER JOIN เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไปเข้าด้วยกัน โดยนำข้อมูลจากตารางทางด้านซ้ายมือและตารางทางด้านขวามือ ทั้งที่ตรงและไม่ตรงกับเงื่อนไขของการเชื่อมโยงมาแสดง จริงๆ แล้วผลของการ FULL OUTER JOIN ก็คือ ผลของการ LEFT OUTER JOIN และ RIGHT OTER JOIN มารวมกัน
SELECT * FROM Table_A FULL OUTER JOIN Table_B NO Table_A.ColumnA1 = Table_B.ColumnB1
CROUSS JOIN
เป็นการเชื่อมตารางตั้งแต่ 2 ตารางขึ้นไปโดยนำข้อมูลทุกๆ แถวของตารางมาเชื่อมกับข้อมูลทุกๆแถวของอีกตารางหนึ่ง ซึ่งจำนวนแถวที่ได้จะเท่ากับผลคูณของตารางที่นำมาเชื่อมกัน
SELECT * FROM Table_A CROSS JOIN Table_B
SELF JOIN
เป็นการเชื่อมตารางโดยใช้ตารางของตัวเอง เราสามารถใช้รูปแบบการเชื่อมที่กล่าวมา ได้แก่ INNER JOIN และ OUTER JOIN เหล่านี้มาทำการเชื่อมข้อมูลเพื่อให้ได้ผลลัพธ์ตามต้องการ
SELECT E1.emp_no,E1.emp_name,E2.emp_name as under FROM kk_employee E1 LEFT OUTER JOIN kk_employee E2
ON E1.emp_no = E2.manager_no
สำหรับการเชื่อมตาราง 3 ตาราง เราสามารถทำได้ คือ LEFT JOIN
SELECT * FROM status
LEFT JOIN units ON (status.units_id = units.units_id)
LEFT JOIN tools ON (status.tools_id = tools.tools_id)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น