งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

CHARPTER 8 การสอบถามข้อมูลแบบซ้อนกัน SELECT … SELECT.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "CHARPTER 8 การสอบถามข้อมูลแบบซ้อนกัน SELECT … SELECT."— ใบสำเนางานนำเสนอ:

1 CHARPTER 8 การสอบถามข้อมูลแบบซ้อนกัน SELECT … SELECT

2 สาระการเรียนรู้ เพื่อศึกษาการใช้ Query ซ้อน Query เพื่อให้สะดวกต่อการสอบถาม เงื่อนไขแบบซับซ้อน

3 สอบถามข้อมูลแบบซ้อนกัน SQL มีโครงสร้างที่ทำหน้าให้ผู้ใช้สามารถ สอบถามข้อมูลได้ละเอียด มากขึ้น โดยสามารถสอบถามข้อมูลซ้อนคำสั่งสอบถาม ได้ เรียกว่า การสอบถาม แบบซ้อนกัน หรือ “Subquery” หลักการของการ สอบถามข้อมูลแบบซ้อนกัน คือ ผลลัพธ์จากการสอบถามย่อย (subquery) จะส่งต่อไป ยังคำสั่งสอบถามหลักซึ่งอยู่ในระดับถัดขึ้นไป (main query)

4 SELECT (main Query) การสอบถามระดับแม่ FROM ; Where (SELECT …(Subquery) การสอบถามระดับลูก FROM [WHERE ]); รูปแบบทั่วไปของ Query และ Subquery แสดง ได้ดังนี้ รูปแบบของคำสั่ง

5 ตัวอย่าง 7-1 จงทำการสอบถามข้อมูลจาก Database School เพื่อต้องการทราบข้อมูล นักษาที่มีจำนวนสมาชิกเท่ากับ 3 คน และอยู่ชมรม อะไรบ้าง ใช้ความรู้พื้นฐานในการสอบถามข้อมูล ต้องทำ การสอบถามข้อมูล 2 ขั้นตอนคือ ขั้นตอนที่ 1 ทำการแสดงชื่อชมรมที่มีจำนวน สมาชิกเท่ากับ 3 SELECT club from club group by club having count(*)=3; ผลลัพธ์

6 ขั้นตอนที่ 2 นำผลลัพธ์ที่ได้จากขั้นตอนที่ 1 ทราบว่ามี ทั้งหมด 3 ชมได้แก่ นิทรรศการ, แนะแนวการศึกษา, ลีลาศ จากนั้นอยากทราบว่า นศ. รหัส ไหน สังกัดชมรมอะไรบ้าง โดย SELECT studentid,club from club where club=' ลีลาศ '; ผลลัพธ์

7 ขั้นตอนที่ 3 ทำการ Subquery ซ้อนกันโดย SELECT studentid,club from club where club in (select club from club group by club having count(*)=3); ผลลัพธ์

8 ตัวอย่างการใช้ ANY =ANY หมายถึง เท่ากับค่าใดค่าหนึ่งในกลุ่มข้อมูลที่กำหนด ( ความหมายเดียวกับการใช้ IN) > ANY หมายถึง มากกว่าค่าใดค่าหนึ่งในกลุ่มข้อมูลที่ กำหนด < ANY หมายถึง น้อยกว่าค่าใดค่าหนึ่งในกลุ่มข้อมูลที่ กำหนด ALL หมายถึง ไม่เท่ากับค่าทุกค่าในกลุ่มข้อมูลที่กำหนด ( ความหมายเดียวกับการใช้ NOT IN) >=ALL หมายถึง มากกว่าหรือเท่ากับทุกค่าในกลุ่มข้อมูลที่ กำหนด <=ALL หมายถึง น้อยกว่าหรือเท่ากับค่าทุกค่าในกลุ่มข้อมูล ที่กำหนด

9 ตัวอย่าง 7-2 จงทำการสอบถามข้อมูลจาก Database School เพื่อต้องการทราบข้อมูล รายวิชากับอาจารย์ที่สอนแต่ละวิชาเป็นใครบ้าง ขั้นตอนที่ 1 ทำการแสดงรายวิชาในรายวิชาชื่ออาจารย์ สอนเช่นอ. สิริ select subjectid from teacher where teacher = ' สิริ ศรีสมร '; ผลลัพธ์

10 select subjectid, teacher from teacher where subjectid ขั้นตอนที่ 2 นำผลลัพธ์ที่ได้จากขั้นตอนที่ 1 ทราบว่ามี ทรายวิชาไหนบ้างจากจากนั้น จากนั้นแสดงชื่ออาจารย์และรายวิชาที่อาจารย์สอน ผลลัพธ์

11 ขั้นตอนที่ 3 ทำการ Subquery ซ้อนกันโดย ผลลัพธ์ select subjectid, teacher from teacher where subjectid = any (select subjectid from teacher where teacher=' สิริ ศรีสมร ');

12 ตัวอย่าง 7-3 จงทำการสอบถามข้อมูลจาก Database School เพื่อต้องการทราบข้อมูล หาชั้นเรียนที่มีจำนวนนักศึกษามากที่สุด ขั้นตอนที่ 1 ทำการนับจำนวนนักศึกษาทั้งหมดในแต่ละ Class ผลลัพธ์ select count(*) from student group by class;

13 ขั้นตอนที่ 2 ทำการนับจำนวน class ทั้งหมด select class,count(*) from student group by class ผลลัพธ์

14 ขั้นตอนที่ 3 ทำการ Subquery ซ้อนกันโดย select class,count(*) from student group by class having count(*) >=ALL (select count(*) from student group by class); ผลลัพธ์

15 ตัวอย่าง 7-4 จงทำการสอบถามข้อมูลจาก Database School เพื่อต้องการทราบข้อมูล นักศึกษาที่ได้คะแนนวิชา I001 เป็นอันดับ 2 ขั้นตอนที่ 1 ทำการหาค่าคะแนนสูงสุด ในรายวิชา I001 ผลลัพธ์ select max(score) from student_subject where subjectid='I001'

16 ขั้นตอนที่ 2 ทำการตัดแถวคะแนนนักศึกษาที่มีค่าสูงสุด ออก select max(score) from student_subject where subjectid='I001' and score < ขั้นตอนที่ 3 แสดงรหัสนักศึกษาและคะแนนนักศึกษา ได้คะแนนในวิชา I001 select studentid,score from student_subject where subjectid='I001'

17 ผลลัพธ์ ขั้นตอนที่ 3 ทำการ Subquery ซ้อนกันโดย select studentid,score from student_subject where subjectid='I001' and score= (select max(score) from student_subject where subjectid='I001' and score < (select max(score) from student_subject where subjectid='I001'));

18 Subquery ที่อ้างถึงคอลัมน์ของ Main Query ตัวอย่าง 7-5 จงทำการสอบถามข้อมูลจาก Database School เพื่อต้องการทราบข้อมูล นักศึกษาคนใดได้คะแนนในวิชา P001 เท่ากันบ้าง SELECT studentid, subjectid, score from student_subject as s1 where subjectid='P001' and score=ANY (select score from student_subject as s2 where subjectid='P001' and s1.studentid<>s2.studentid) order by score; ผลลัพธ์

19 ตัวอย่าง 7-6 นักศึกษาคนใดบ้างที่ไม่มีชมรมสังกัด select * from student as s where NOT EXISTS (SELECT studentid from club AS c where s.studentid=c.studentid); ผลลัพธ์

20 การ UNION ผลลัพธ์จากการ UNION Club_TBL

21 การ UNION

22 ตัวอย่าง 7-7 นักศึกษาสังกัดชมรม SELECT studentid,club from club where club=' คอมพิวเตอร์ ' union SELECT studentid,club from club where club=' ภาษาอังกฤษ '; ผลลัพธ์

23 สรุปท้ายบทเรียน คำสั่ง SELECT มีรูปแบบการใช้งานที่หลากหลาย ในการค้นหาข้อมูลที่ต้องการแต่ละครั้งอาจจะใช้คำสั่ง SELECT ที่มีประโยคคำสั่งต่าง ๆ เพื่อทำความเข้าใจกับ ลำดับการทำงานจริงเมื่อมีการคิวรีเกิดขึ้นด้วย สรุปรูปแบบคำสั่ง SELECT Syntax select [build-in function] column_list FROM table_name [WHERE row_condition] [GROUP BY column_list] [HAVING group_condition] [ORDER BY column_list];

24 ลำดับที่ 1 : ทำงานตามประโยค FROM - FROM student_subject - WHERE score IS NOT NULL - GROUP BY subjectid - HAVING AVG(score)>50 - SELECT subjectid, AVG(score) - ORDER BY 2

25 THE END


ดาวน์โหลด ppt CHARPTER 8 การสอบถามข้อมูลแบบซ้อนกัน SELECT … SELECT.

งานนำเสนอที่คล้ายกัน


Ads by Google