Structure Query Languge

Home

SQL Basic
Knowledge Developer Database Internet Resource
1. SELECT Statement
2. GROUP BY
3. HAVING
4. ORDER BY
5. การรวมเงื่อน และ Boolean Operator
6. IN และ BETWEEN
7. Function
8. Aggregate Function
9. JOIN
10. OUTER JOIN
11. Sub Query และ UNION
12. สรุป
 
SQL
SQL Basic
SQL Query
TABLE,VIEW
 
[an error occurred while processing this directive]

9. JOIN

การค้นหาและเลือกข้อมูลตามหัวข้อที่ผ่านมาเป็นการทำงานกับ table เดียว ในขณะที่การทำงานจริงต้องมีการเลือกข้อมูลจากหลาย table เพื่อแสดงสารสนเทศที่ต้องการได้ เนื่องจากหลักการพื้นฐานของ Relational Database System ให้ออกแบบการจัดเก็บข้อมูลในแต่ละ table สำหรับ entity เดียว เพื่อขจัดการเก็บข้อมูลที่ซ้ำซ้อน แล้วใช้ความสัมพันธ์ของ table แสดงผลเป็นสารสนเทศที่ต้องการ

JOIN สามารถรับรู้ในประโยคคำสั่ง SQL ถ้ามี table มากกว่า 1 table หลังคีย์เวิร์ด FROM

ไวยากรณ์

SELECT list-of-columns
FROM table1,table2,..
WHERE search-condition1 = search-condition2, ..

สมมติว่า ในการเก็บข้อมูลการซื้อสินค้า ประกอบด้วย 3 table คือ
1. customer_info เก็บรายละเอียดของลูกค้า
2. purchase_order เก็บรายละเอียดรายการสั่งซื้อ

”customer_info”

customer_number firstname lastname address city province zip
             

”purchases”

customer_number buydate item quantity price
         

Key

ในการเชื่อม table ของ SQL มีส่วนสำคัญที่เกี่ยวข้อง คือ Key ซึ่งมีแนวคิด ดังนี้

primary key เป็นคอลัมน์หรือชุดของคอลัมน์ที่ระบุแบบไม่ซ้ำ ตัวอย่างเช่น table “customer_info” มีคอลัมน์ customer_number เป็นคอลัมน์ที่ระบุแบบไม่ซ้ำของ ซึ่งมีความหมาย 2 อย่าง คือ ประการแรก ไม่มีข้อมูล 2 แถวสามารถมี customer_number เดียวกัน ถึงแม้ว่า 2 customer_number มีชื่อแรกและชื่อหลังเหมือนกัน ประการที่ 2 คอลัมน์ customer_number ทำให้มั่นใจว่าลูกค้า 2 รายนี้ไม่มีความสับสนต่อกัน เพราะการค้นหาข้อมูลใช้คอลัมน์ customer_number แทนการใช้ชื่อ

foreign key เป็นคอลัมน์ใน table ที่ primary key อยู่ table อื่น ซึ่งหมายความว่า ข้อมูลในคอลัมน์ foreign key ต้องตรงกับข้อมูลของ primary key ใน table อื่น ใน RDBMS ข้อมูลที่ตรงกัน รู้จักในฐานะ Reference Integrity ตัวอย่างเช่น table “purchases” มีคอลัมน์ customer_number เป็น foreign key โดยมี primary key อยู่ใน table “customer_info”

JOIN ที่กล่าวถึงนี้ เป็น INNER JOIN ซึ่งเป็นประเภทการเชื่อมปกติ

ตัวอย่าง

SELECT customer_info.firstname, customer_info.lastname, purchases.item
FROM customer_info, purchases
WHERE customer_info.customer_number = purchases.customer_number;

ประโยคคำสั่งนี้ แสดงผลลัพธ์ของคอลัมน์ firstname และ lastname จาก table “customer_info” และคอลัมน์ item จาก table “purchases” โดยเชื่อมระหว่าง table ด้วยคอลัมน์ customer_number ของ 2 table

Notice: แต่ละคอลัมน์นำหน้าด้วย ชื่อ table และจุด ซึ่งไม่มีความจำเป็นในทุกกรณี แต่จำเป็นถ้าคอลัมน์ที่เรียกมีอยู่ใน 2 table การเขียนด้วยรูปแบบนี้เป็นแบบแผนการเขียนที่ดีในการป้องกันความสับสนในเรื่องที่มาของคอลัมน์และ table

การเขียนคำสั่งตามมาตรฐานไวยากรณ์ ANSI SQL-92

SELECT customer_info.firstname, customer_info.lastname, purchases.item
FROM customer_info INNER JOIN purchases
ON customer_info.customer_number = purchases.customer_number;

ตัวอย่าง

SELECT employee.employee_id, employee.lastname, employee_sales.comission
FROM employee, employee_sales
WHERE employee.employeeid = employee_sales.employeeid;

ประโยคคำสั่งนี้เลือก employee_id และ lastname จาก table “employee” และ comission จาก table “employee_sales” สำหรับทุกแถวที่ employee_id ใน table “employee” ตรงกับ employee_id ใน table “employee_sales”


  

สงวนลิขสิทธิ (C) widebase