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

เชื่อมโยง mysql 3 ตาราง

เชื่อมโยง 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)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น