บทที่ 4
การสร้างแบบสอบถาม (Query)
     การสร้างแบบสอบถาม (query) เป็นเครื่องมือที่ใช้ในการค้นหาข้อมูลตามเงื่อนไขที่กำหนด เรียงลำดับหรือจัดกลุ่มข้อมูลให้อยู่ในรูปแบบที่ต้องการ แสดงผลข้อมูลที่มาจากหลายตารางที่มีความสัมพันธ์กัน เปลี่ยนแปลงรูปแบบของการแสดงผล ปรับปรุงข้อมูลในตาราง คำนวณผลลัพธ์หรือสรุปผลข้อมูลจากตารางต่างๆ และสามารถกำหนดตัวแปรเพื่อรับค่าที่ใช้เป็นเงื่อนไขในการค้นหา คานวณผลลัพธ์ หรือวิเคราะห์สรุปผลข้อมูลได้ด้วย

มุมมองของแบบสอบถาม

มุมมองของแบบสอบถาม มี 5 ลักษณะ คือ
     1. มุมมองออกแบบ (design) เป็นมุมมองที่ใช้ในการออกแบบและสร้างแบบสอบถามซึ่งประกอบด้วยเงื่อนไขและกฎเกณฑ์ต่างๆ ที่จะนำไปใช้ค้นหาหรือแสดงข้อมูลที่ต้องการ
     2. มุมมองแผ่นข้อมูล (datasheet) เป็นมุมมองที่ใช้แสดงข้อมูลทั้งหมดที่ค้นหาได้ตามเงื่อนไขที่กำหนดไว้ใน แบบสอบถาม โดยแสดงในลักษณะ datasheet เหมือนกับ table
     3. มุมมอง SQL เป็นมุมมองที่ใช้สร้างหรือแสดงเงื่อนไขที่กำหนดไว้ในแบบสอบถามด้วยรูปแบบของภาษาเอสคิวแอล (Structured Query Language : SQL)
     4. มุมมอง pivot table เป็นมุมมองที่ใช้แสดงข้อมูลที่ได้จากการรันแบบสอบถามตามเงื่อนไขที่กำหนดไว้ โดยแสดงในรูปของตารางแจกแจงรายละเอียดและสรุปผลข้อมูล
     5. มุมมอง pivot chart เป็นมุมมองที่ใช้แสดงข้อมูลที่ได้จากการรันแบบสอบถามโดยวิเคราะห์หรือสรุปผล ในรูปของแผนภูมิหรือ chart

ประเภทของแบบสอบถาม

Access แบ่งแบบสอบถามเป็น 5 ประเภท คือ
     1. Select Query สอบถามข้อมูลจาก 1 หรือหลายๆ ตาราง
     2. Crosstab Query สอบถามข้อมูลและแสดงผลลัพธ์แบบ 2 มิติ โดยสลับข้อมูลระหว่างแนวแถวและแนวคอลัมน์
     3. Action Query
          - Make-Table Query สร้างตารางใหม่ ซึ่งประกอบด้วย field ที่เลือกจาก Table หรือ Query อื่นที่สร้างไว้
          - Update Query แก้ไขข้อมูลในตารางนัน้ ให้มีค่าตามที่กาหนด
          - Append Query เพิ่ม record หรือกลุ่มของ record ใหม่ต่อท้าย record สุดท้ายของตาราง
          - Delete Query ลบ record หรือกลุ่มของ record ออกจากตาราง
     4. Parameter Query เป็น Query ที่ใช้ใส่ค่าพารามิเตอร์ได้ระหว่างการประมวลผลเพื่อนาไปใช้ค้นหาข้อมูลหรือคานวณค่า เช่น ใส่อัตราการเปลี่ยนแปลงต้นทุนและราคาสินค้า เพื่อคานวณหากาไร ณ อัตราต่างๆ
     5. SQL Query สร้างด้ว

วิธีการสร้างแบบสอบถาม

การสร้างแบบสอบถามทำได้ 3 วิธี คือ
     1. สร้างแบบสอบถามโดยใช้ตัวช่วยสร้าง (Query Wizard) เป็นวิธีการสร้างแบบสอบถาม แบบง่ายๆ และรวดเร็ว โดยตอบคาถามและให้ข้อมูลในการสร้าง แบบสอบถามผ่านทางไดอะล็อกบ๊อกซ์ที่โปรแกรมไมโครซอฟต์แอกเซสเตรียมไว้ให้ทำตามอย่างเป็นลาดับขั้นตอน
     2. สร้างแบบสอบถามในมุมมองออกแบบ (Design View) เป็นวิธีการสร้างแบบสอบถาม ด้วยตนเอง โดยผู้สร้างจะเป็นผู้กำหนดรายละเอียดต่างๆ เองทั้งหมด ซึ่งทำให้ได้แบบสอบถามที่เหมาะสมและตรงกับความต้องการมากที่สุดแต่ผู้สร้างต้องมีความเชี่ยวชาญในการสร้างและออกแบบแบบสอบถามมากกว่าวิธีแรก
    3. สร้างแบบสอบถามในมุมมอง SQL สร้างและแก้ไขแบบสอบถามด้วยภาษา SQLใช้กับแบบสอบถามบางประเภทที่สร้างด้วย Wizard หรือมุมมอง Design ไม่ได้ เช่น Union Queryและ Pass-Through Query เป็นต้น

สร้างแบบสอบถามโดยใช้ตัวช่วยสร้าง

เครื่องมือช่วยสร้าง Query มี 4 ประเภท คือ
     1.1 Simple Query Wizard สร้าง Select Query ค้นหาและประมวลผลข้อมูล โดยเลือกแสดงผลลัพธ์แบบรายละเอียดหรือผลสรุปได้
     1.2 Crosstab Query Wizard สร้าง Crosstab Query ค้นหาและประมวลผลข้อมูล โดยแสดงตาราง  แจกแจง ข้อมูลที่สลับแนวแถวและแนวคอลัมน์พร้อมค่าผลสรุปของข้อมูลนั้น
     1.3 Find Duplicate Query Wizard สร้าง Select Query ค้นหาว่ามี record ใดบ้างที่มีข้อมูลซ้ำกันใน field ที่กำหนด
     1.4 Find Unduplicated Query Wizard สร้าง Select Query ค้นหาข้อมูลในตารางหนึ่งโดยแสดงเฉพาะ record ที่ไม่สามารถจับคู่กับ record ในตารางอื่นที่สัมพันธ์กัน

การสร้างแบบสอบถามด้วยมุมมองการออกแบบ

  
1. ส่วนประกอบในมุมมองออกแบบ

     1.1 Field List Pane แสดงชื่อ Table / Query ที่เป็นแหล่งข้อมูลของ Query แสดงชื่อ field และเส้นความสัมพันธ์ระหว่างตาราง
      1.2 Query Design Grid ประกอบด้วย
          - Field: ใส่ชื่อ Field ที่จะใช้สอบถามข้อมูล
          - Table: ใส่ชื่อ Table / Query ที่เป็นแหล่งข้อมูล
          - Total: ใช้จัดกลุ่มและคานวณค่าผลสรุป (จะแสดงแถวนีเ้มื่อคลิกปุ่ม Totals ในแท็บ Design)
         - Sort: กาหนดรูปแบบการจัดเรียงข้อมูล โดย Ascending จะเรียงจากน้อยไปมาก ส่วน Descending จะเรียงจากมากไปน้อย และ not Sorted คือ ไม่ต้องจัดเรียง
         - Show: ซ่อน field ที่ไม่ให้แสดงค่าในตารางผลลัพธ์ โดยคลิกเอาเครื่องหมาย ถูก ในช่องสี่เหลี่ยมออก
          - Criteria: ใส่เงื่อนไขที่ใช้สอบถามข้อมูล
2. วิธีการสร้างแบบสอบถามด้วย Query Design
     การสร้างแบบสอบถามด้วยมุมมองการออกแบบเป็นการสอบถามข้อมูลด้วยการออกแบบด้วยตนเอง ซึ่งมีขั้นตอนดังนี้

      หากต้องการสอบถามตารางลูกค้า (tblCustomers) โดยถามถึงรหัสลูกค้า (CustomerID), ชื่อ (FirstName), และนามสกุล (LastName) เท่านั้น มีขั้นตอนและผลลัพธ์ดังนี้

การบันทึกผลของแบบสอบถามข้อมูล
     - หลังจากผลของแบบสอบถามได้แสดงออกมาในรูปแบบ Datasheet หรือตารางแล้ว ให้กดปุ่ม Save ที่ด้านมุมบนซ้าย
     - Access จะให้ตั้ง ชื่อของแบบสอบถามนี้ สมมติตั้ง ว่า myQuery1
     - หลังจาก Save แล้ว จะปรากฏหน้าจอดังนี้

การสร้างแบบสอบถามข้อมูลจากตารางมากกว่า 1 ตาราง

การแก้ไขแบบสอบถามข้อมูล
     - ให้บันทึกแบบสอบถามที่เพิ่งทาเสร็จ (แบบมีความสัมพันธ์) ด้วยชื่อว่า myQuery2 หลังจากนั้น ให้ปิดโปรแกรม MS Access
     - เปิดโปรแกรม MS Access ใหม่ และเปิดฐานข้อมูล VDO ใหม่อีกครั้ง
     - คลิก myQuery2 ในหน้าต่างนำทางด้านซ้ายมือเพื่อเปิดแบบสอบถามนี้ขึ้นมาอีก
ครั้ง โดยครั้งนีมี้จุดประสงค์เพื่อทำการแก้ไขแบบสอบถามข้อมูล
     - เข้า Design View
คำตอบที่ได้: แสดงรายการชื่อ ปี และรหัสของหนังที่มีการเช่า รวมถึงวันที่เช่า ชื่อและนามสกุลของลูกค้า ทั้งหมด
* เมื่อได้คำตอบแล้วให้ Save ไว้ด้วย

การกำหนดเงื่อนไขในการค้นหาข้อมูล
     - ในการกำหนดเงื่อนไขในการค้นหาข้อมูลนั้น เราสามารถกำหนดได้ที่ช่อง criteria ในDesign View หลังจากที่สร้างแบบสอบถามแล้ว
     - เราสามารถกำหนดเงื่อนไขต่างๆที่ต้องการได้ โดยการใช้ operator ต่างๆ ซึ่งได้แก่
          1) โอเปอเรเตอร์ทางคณิตศาสตร์ (เช่น บวก ลบ คูณ หาร เป็นต้น)
          2) โอเปอเรเตอร์ทางการเปรียบเทียบและกาหนดค่า (เช่น เท่ากับ น้อยกว่า มากกว่า เป็นต้น)
         3) โอเปอเรเตอร์ทางตรรกศาสตร์ (เช่น และ หรือ ไม่ เป็นต้น)
          4) โอเปอเรเตอร์เกี่ยวกับการเชื่อมข้อความ

โอเปอเรเตอร์ (Operator) ทางคณิตศาสตร์

โอเปอเรเตอร์ (Operator) ทางการเปรียบเทียบและกาหนดค่า

โอเปอเรเตอร์ (Operator) ทางตรรกศาสตร์

โอเปอเรเตอร์ (Operator) ในการเชื่อมข้อความ

ตัวอย่างการกำหนดเงื่อนไข
     ตัวอย่างที่ 1 เลือกทุกคอลัมน์ของตาราง tblCustomerID ที่ City เท่ากับ “MyTown”

     ตัวอย่างที่ 2 เลือกทุกคอลัมน์ของตาราง tblCustomerID ที่ LastName ขึ้นต้นด้วย Ba

     ตัวอย่างที่ 3 เลือกทุกคอลัมน์ของตาราง tblCustomerID ที่ LastName มีเพียง 4 อักขระ

     ตัวอย่างที่ 4 เปิด myQuery2 ออกมา คงไว้เหมือนเดิมทุกอย่าง เว้นแต่ว่าต้องการรายการที่เช่าหนังหลังจากวันที่ 25 กันยายน 2550 เท่านั้น

     ตัวอย่างที่ 5 จงค้นหาข้อมูลดังนี้ ชื่อลูกค้า รหัสของหนังที่ลูกค้าคนนั้น เช่าไป และชื่อหนัง โดยกำหนดว่า หนังต้องออกมาในระหว่างปี 1990 – 2000 หรือ มากกว่า 2002 เท่านั้น
     ตัวอย่างที่ 6 จงค้นหาข้อมูลทั้ง หมดจากตาราง tblCustomers โดยมีเงื่อนไขว่า ลูกค้าต้องมีชื่อจริงว่า Lisa, Peggy, หรือ Mary เท่านั้น

การสร้างฟิลด์ใหม่จากการรวมฟิลด์
     สามารถทาได้โดยการเติมฟิลด์ใหม่ที่ต้องการในรูปแบบชื่อฟิลด์ใหม่:[ฟิลด์ที่ 1]&[ฟิลด์ที่ 2]& … เช่น

การเรียงฟิลด์ (Sort)
     - ใช้ตัวอย่างที่แล้วแต่จะเรียงจากตัวอักษรก่อนไปหลัง หรือ Ascending
     - Descending = จากหลังมาหน้า (ถ้าเป็นตัวเลข มากกว่า ไปน้อยกว่า)


การสร้างฟิลด์คานวณ
     - เราสามารถสร้างฟิลด์ใหม่เป็นฟิลด์คำนวณคิดเลขให้เราได้ โดยใช้รูปแบบดังนี้ ชื่อฟิลด์ใหม่:สูตร
     - ตัวอย่างเช่น จากตาราง tblRental จงหาว่าถ้าลดราคา 25% จะลดเท่าไร และราคาหลังลดแล้วเท่ากับเท่าไร

การใช้ IIF
     รูปแบบ IIF(เงื่อนไข, ค่าที่ได้เมื่อเงื่อนไขเป็นจริง, ค่าที่ได้เมื่อเงื่อนไขเป็นเท็จ) เช่น











การสร้างแบบสอบถามในมุมมอง SQL

     ในการสร้าง Query ด้วย Wizard และสร้างด้วยตนเองในมุมมอง Design จะเหมือนกันตรงที่ไม่จeเป็นต้องทราบโครงสร้างภาษา SQL ที่ซ่อนอยู่เบื้องหลังการทำงานของ Query นั้นแม้จะทำงานร่วมกับ Query ได้โดยไม่จำเป็นต้องรู้ภาษา SQL เลยก็ตาม แต่ถ้าได้ทราบการทำงานของภาษา SQL บ้าง ก็จะช่วยให้ทำงานร่วมกับ Query บางประเภทที่ไม่สามารถสร้างด้วย Wizard หรือมุมมอง Design ได้ เช่น Union Query, Pass-Though Query และ Data Definition QuerySQL ย่อมาจาก Structured Query Language เป็นภาษามาตรฐานที่ใช้ทำงานร่วมกับระบบฐานข้อมูล ชุดคำสั่งพื้นฐานที่สาคัญในภาษา SQL ที่ใช้จัดการข้อมูลมี 4 คำสั่ง คือ
     1. SELECT ค้นหาข้อมูล
     แสดงกลุ่ม record ที่ค่าใน field นั้นไม่ซ้ำกัน
          - DISTINCTROW แสดงกลุ่ม record ที่ข้อมูลทุก field ไม่ซ้ำกัน
          - JOIN กำหนดลักษณะการรวมกันของข้อมูลจากต่าง Table แบ่งออกเป็น 3 ลักษณะ คือ INNER JOIN, LEFT-OUTER JOIN และ RIGHT-OUTER JOIN
          - FROM ระบุชื่อ Table / Query ที่จะนำมาค้นหาข้อมูล
          - WHERE ระบุเงื่อนไขที่จะใช้ค้นหาข้อมูล
          - GROUP BY กาหนด field ที่จะใช้จัดกลุ่มข้อมูล
          - ORDER BY กาหนด field ที่จะใช้จัดเรียงข้อมูล
          - AS ตั้งชื่อ field ใหม่ในตารางผลลัพธ์
     2. UPDATE ปรับปรุงข้อมูล
     3. INSERT เพิ่ม record ใหม่ในฐานข้อมูล
     4. DELETE ลบ record ออกจากฐานข้อมูล