กรณีศึกษา
โจทย์ คือจะต้องทำการนัดหมาย คนเพื่อมาประชุมโดย
ต้องเชคให้ได้ก่อนว่า มีใครบ้างที่ไม่ว่างในช่วงเวลาที่กำหนด
โดยนัดหมายคน ที่เวลา 10:00-12:00 อยากรู้ว่าใครติดประชุมบ้าง?
คนที่ 1 ติดประชุม 8:00-17:00
คนที่ 2 ติดประชุม 8:00-11:00
คนที่ 3 ติดประชุม 11:00-17:00
คนที่ 4 ติดประชุม 10:30-11:30
คนที่ 5 ติดประชุม 13:00-15:00
โจทย์คือเรากำลังจะหา SQL Command
โดยใช้ s แทน เวลาเริ่มประชุม
stop แทนเวลาเลิกประชุม
s = 10.00
stop = 12.00
table tablex
id, Begintime, EndTime
1 8:00,17:00
2 8:00,11:00
3 11:00,17:00
4 10:30,11:30
5 13:00,15:00
แนวทางในการหาคนที่ไม่ว่างในเวลา s และ stop
1 (เวลาเริ่มประชุม < 10.00 AND เวลาเลิกประชุม > 12.00)
2 (เวลาเริ่มประชุม > 10.00 AND เวลาเริ่มประชุม < 12.00)
3 (เวลาเลิกประชุม > 10.00 AND เวลาเลิกประชุม < 12.00)
เปลี่ยนเป็น Command
1 (Begintime < s and Endtime > Stop)
2 (Begintime > s and Begintime < stop)
3 (Endtime > s and Endtime < stop)
จากภาพข้างต้น
select id from tablex
โจทย์ คือจะต้องทำการนัดหมาย คนเพื่อมาประชุมโดย
ต้องเชคให้ได้ก่อนว่า มีใครบ้างที่ไม่ว่างในช่วงเวลาที่กำหนด
โดยนัดหมายคน ที่เวลา 10:00-12:00 อยากรู้ว่าใครติดประชุมบ้าง?
คนที่ 1 ติดประชุม 8:00-17:00
คนที่ 2 ติดประชุม 8:00-11:00
คนที่ 3 ติดประชุม 11:00-17:00
คนที่ 4 ติดประชุม 10:30-11:30
คนที่ 5 ติดประชุม 13:00-15:00
โจทย์คือเรากำลังจะหา SQL Command
โดยใช้ s แทน เวลาเริ่มประชุม
stop แทนเวลาเลิกประชุม
s = 10.00
stop = 12.00
table tablex
id, Begintime, EndTime
1 8:00,17:00
2 8:00,11:00
3 11:00,17:00
4 10:30,11:30
5 13:00,15:00
แนวทางในการหาคนที่ไม่ว่างในเวลา s และ stop
1 (เวลาเริ่มประชุม < 10.00 AND เวลาเลิกประชุม > 12.00)
2 (เวลาเริ่มประชุม > 10.00 AND เวลาเริ่มประชุม < 12.00)
3 (เวลาเลิกประชุม > 10.00 AND เวลาเลิกประชุม < 12.00)
เปลี่ยนเป็น Command
1 (Begintime < s and Endtime > Stop)
2 (Begintime > s and Begintime < stop)
3 (Endtime > s and Endtime < stop)
แนวคิดในการค้นหา SQL |
จากภาพข้างต้น
คนที่ 1 2 3 และ 4 ทั้งหมดที่กล่าวมามีส่วนของช่วงเวลาที่
อยู่ในกรอบเส้นปะสีเทา ซึ่งเป็นคนที่ไม่ว่างแน่นอน
คนที่ 5 (กรอบสีน้ำเงินเล็ก)
ไม่ได้อยู่ในตำแหน่งกรอบเส้นปะสีเทา จึงตอบได้ว่า คนที่ 5 นั้นว่าง
เราจะได้ SQL Command
ดังนี้
where
(Begintime < s and Endtime > stop) or
(Begintime > s and Begintime < stop) or
(Endtime > s and Endtime < stop)
หลายวันก่อนกลับมาอ่านเอง เพื่อเอาไปประยุงต์คิด OT โดยให้ระบบหักพักเที่ยงออกไป
ReplyDeleteก็ยังสามารถประยุกต์ได้