หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงูการจัดการฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงูสาระสาคญั : คาส่งั SELECT ท่เี ราได้เรียนร้ใู นบทท่แี ล้ว ทาให้เราสามารถแสดงหรือเรียกดูข้อมูลจากตารางฐานข้อมูลได้ในเบ้อื งต้น ในบทน้ีเราจะเรียกดูข้อมูลข้ันสงู ไม่ว่าจะเ็นการเรียกดูข้อมูลท่มี ากกว่า 1 ตาราง (Joins)การเรียกดูข้อมูลด้วยคาส่งั SELECTแบบซ้อนหลายระดบั (Subqueries) เพ่ือให้ได้ข้อมูลท่มี คี วามซับซ้อนและตรงกบัความต้องการมากข้นึการจดั การฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู 8.1 การเรียกดขู อ้ มูลจากตารางมากกว่า 1 ตารางโดยการ Join การท่เี ราออกแบบตารางในการจดั เกบข้อมูล ข้อมูลท่เี ก่ยี วข้องหรือมีความสมั พันธก์ นั อาจอยู่กนัคนละตารางได้ เราจงึ ต้องเรียนร้กู ารเรียกดูข้อมูลจากตารางท่มี คี วามสมั พันธก์ นั มากกว่า 1 ตาราง การเรียกดูข้อมูลมากกว่า 1 ตาราง หมายถงึ การเรียกดูข้อมูลจากตารางหลายๆ ตารางผ่านฟิ ลด์ท่มี ีความสมั พันธก์ นั นิยมเรียกอกี อย่างหน่ึงว่า การ join ตาราง น่ันเอง1.INNER JOIN รู็แบบคาส่งั SELECT ช่ือตารางท่ตี ้องการ ซ่ือฟิ ลด์ของตารางท่ตี ้องการ FROM ช่ือตารางท่ี 1 INNER JOIN ช่ือตารางท่ี 2 ON ช่ือตารางท่ี 1.ช่ือฟิ ลดต์ ารางท่ี 1=ช่ือตารางท่ี 2.ช่ือฟิ ลด์ตารางท่ี 2หมายเหตุ ช่ือฟิ ลดต์ ารางท่ี 1 และ ช่ือฟิ ลดต์ ารางท่ี 2 เ็นฟิ ลด์ท่มี ีความสมั พันธก์ นัการจดั การฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู การใช้ INNER JOIN จะแสดงเฉพาะแถวข้อมูลท่ตี รงกนั เท่าน้ัน เช่นในตวั อย่างท่ี 1 จะแสดง เฉพาะแถวข้อมูลของฟิ ลด์ departmentID จากตารางEmployee ท่ตี รงกนั กบั แถวข้อมูลของฟิ ลด์ departmentID จากตารางDepartment เท่าน้ัน ตาราง Employee ตาราง Department ผลลัพธ์ รู็ท่ี 8.1 แสดงผลลัพธท์ ่เี กดิ จากทางานของ INNER JOINการจัดการฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู 2.LEFT JOIN รู็แบบคาส่งัSELECT ช่ือตารางท่ตี ้องการ ซ่ือฟิ ลดข์ องตารางท่ตี ้องการ……FROM ช่ือตารางท่ี 1LEFT JOIN ช่ือตารางท่ี 2ON ช่ือตารางท่ี 1.ช่ือฟิ ลดต์ ารางท่ี 1=ช่ือตารางท่ี 2.ช่ือฟิ ลด์ตารางท่ี 2หมายเหตุ ช่ือฟิ ลดต์ ารางท่ี 1 และ ช่ือฟิ ลด์ตารางท่ี 2 เ็นฟิ ลด์ท่มี ีความสมั พันธก์ นัการจดั การฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู การใช้ LEFT JOIN จะแสดงข้อมูลของตารางด้านซ้าย(ตาราง employee)ท้งั หมดและแสดงข้อมูลตารางด้านขวา (ตาราง Department) เฉพาะข้อมูลของฟิ ลด์Department ท่มี ีข้อมูลตรงเทา่ น้ัน ตาราง Employee ตาราง Department ผลลัพธ์ ร็ู ท่ี 8.2 แสดงผลลัพธท์ ่เี กดิ จากทางานของ LEFT JOINการจัดการฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู 3.RIGHT JOIN ร็ู แบบคาส่งัSELECT ช่ือตารางท่ตี ้องการ ซ่ือฟิ ลด์ของตารางท่ตี ้องการ……FROM ช่ือตารางท่ี 1RIGHT JOIN ช่ือตารางท่ี 2ON ช่ือตารางท่ี 1.ช่ือฟิ ลดต์ ารางท่ี 1=ช่ือตารางท่ี 2.ช่ือฟิ ลด์ตารางท่ี 2หมายเหตุ ช่ือฟิ ลดต์ ารางท่ี 1 และ ช่ือฟิ ลดต์ ารางท่ี 2 เ็นฟิ ลด์ท่มี คี วามสมั พันธก์ นัการจัดการฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู การใช้ RIGHT JOIN จะแสดงข้อมูลของตารางด้านขวา (ตารางdepartment) ท้งั หมดและแสดงข้อมูลตารางด้านซ้าย (ตาราง Employee)เฉพาะข้อมูลของฟิ ลด์ departmentID ของตาราง employee และฟิ ลด์DepartmemtID ของตาราง Department ท่มี ีข้อมูลท่ตี รงกนั ตาราง Employee ตาราง Department ผลลัพธ์ รู็ท่ี 8.3 แสดงผลลัพธท์ ่เี กดิ จากทางานของ RIGHT JOINการจดั การฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู8.2 การใช้งานคาส่งั SELECT แบบซ้อนหลายระดับ (subqueries) เราสามารถใช้งานคาส่งั SELECT แบบซ้อนหลายระดบั ได้หากเราต้องการข้อมูลท่มี คี วามซับซ้อนมากย่ิงข้ึน ตัวอย่างท่ี 5 ต้องการแสดงช่ือพนักงานท่ยี งั ไม่ได้รับมอบหมายให้ดูแลลูกค้า จากโจทยแ์ บ่งชุดของคาถามได้เ็น 2 ชุด คอืการจัดการฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู ชุดท่ี 1 มพี นักงานคนไหนบ้างท่ไี ด้รับมอบหมายให้ดูแลลูกค้า SELECT emploeeID FROM assigment Employee 1111 2222ชุดท่ี 2 มพี นักงานคนท่ไี ม่ตรงกบั คาถามชุดท่ี 1 มใี ครบ้างSELECT name FROM employeeWHERE employeeID != 1111 AND employeeID !=2222 Name Somjai Yongyutการจัดการฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 ดงั น้ันในการเขียน subqueries จะทาการรวม SQL 2 ชุดขเร้า่ืองงตก้นารเเร็ียกนดูขS้อมQูลข้นั Lสงูชุดเดยี วกนั โดยให้ SQL ชุดท่ี 1 เ็น Query ย่อย ซ่ึงจะถูกกาหนดไว้ภายใต้เง่ือนไขของSQL ชุดท่ี 2 ดังน้ี SELECT name FROM employee WHERE employeeID not in (SELECT employeeID FROM assignment) ผลลัพธข์ องตัวอย่างท่ี 5 Name Somjai Yongyut หมายเหตุ จาก SQL ข้างต้นเราใช้คาส่ง not in ในการเลือกพนักงาน แทนเคร่ืองหมาย != เน่ืองจากมพี นักงานมากกว่า 1 คนท่ไี ด้รับมอบหมายให้ดูแลลูกค้า ดงั น้ันถ้าใช้ !=จะไม่สามารถทราบได้ว่าจะเ็รียบเทยี บ != กบั พนักงานคนไหนการจดั การฐานข้อมูล รหัส 3204-2004
หน่วยท่ี 8 เร่ือง การเรียกดูข้อมูลข้นั สงู ตัวอย่างท่ี 6 แสดงรายละเอยี ดการตดิ ต่อท้งั หมดการดูแลลูกค้า(Assignment)ของพนักงานท่ชี ่ือ SomchaiSELECT *FROM AssignmentWHERE employeeID =(SELECT employeeIDFROM employeeWHERE name=‘Somchai’)ผลลัพธจ์ ากตัวอย่างท่ี 6 clientID Employee Workdate hours 2010-04-10 8.5 1 1111 2010-04-25 5 1 1111 การใช้งาน SELECT แบบซ้อนหลายระดับน้ี ข้อควรระวังคอื คาส่งั SELECTท่อี ยู่หลังเง่ือนไข WHERE จะต้องได้ผลลัพธเ์ ็น 1 แถวน้ันการจัดการฐานข้อมูล รหัส 3204-2004
Search
Read the Text Version
- 1 - 12
Pages: