Database SQL – JOIN
ในบางครั้งการเก็บข้อมูลบนฐานข้อมูล หรือ database อาจจะมีการกระจายของข้อมูลอยู่ในหลายๆ table ขึ้น ขึ้นอยู่กับทาง admin ที่ออกแบบการเก็บข้อมูลแต่ละชนิดของ table ในบางครั้งข้อมูลใน table อาจจะมีความสัมพันธ์ที่ในบาง column ที่ข้อมูลเหมือนกัน และทาง user เองอาจต้องการเชื่อมข้อมูลของ 2 table นั้นเข้าด้วยกัน ซึ่งสามารถทำได้ด้วยคำสั่ง SQL Join statement
รูปแบบ (Syntax)
SELECT table1.column1, table2.column2...
FROM table1
JOIN table2
ON table1.common_field = table2.common_field;
ตัวอย่าง SQL JOIN statement
Table 1 – สร้าง CUSTOMERS table
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Table 2 – สร้าง ORDERS table
+-----+---------------------+-------------+--------+
|OID | DATE | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
คำสั่ง JOIN statement
SQL> SELECT ID, NAME, AGE, AMOUNT
FROM CUSTOMERS
JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
หรือ เราสามารถใช้ Where Clause statement ในการเชื่อมด้วยเงื่อนไข column ที่ต้องการ
SQL> SELECT ID, NAME, AGE, AMOUNT
FROM CUSTOMERS, ORDERS
WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
ผลลัพธ์ที่ได้ คือเราสามารถนำเอาข้อมูล column จากทั้ง 2 table มาเชื่อมต่อกันได้
+----+----------+-----+--------+
| ID | NAME | AGE | AMOUNT |
+----+----------+-----+--------+
| 3 | kaushik | 23 | 3000 |
| 3 | kaushik | 23 | 1500 |
| 2 | Khilan | 25 | 1560 |
| 4 | Chaitali | 25 | 2060 |
+----+----------+-----+--------+
ประเภทของ SQL JOIN statement
จากตัวอย่างข้างบนเป็นเพียงแค่รูปแบบการ JOIN ที่เป็นแบบ default เท่านั้น ซึ่งในความเป็นจริงการ JOIN มีด้วยกันหลายแบบ โดยแต่ละแบบก็จะได้ผลลัพธ์ไม่เหมือนกันด้วย เพราะการ JOIN ก็คือ SQL operator แบบหนึ่ง ซึ่งมีหลักการเดียวกับเรื่อง set ในคณิตศาสตร์ เช่น union, intersect, minus
- INNER JOIN − แสดงผลข้อมูลที่มีค่าทั้ง 2 table เหมือนกันใน column ที่ระบุ (Default)
- LEFT JOIN − แสดงผลข้อมูลของ table ทางซ้ายทั้งหมด (table 1) และ ข้อมูลของ table ทางขวาที่ตรงเงื่อนไข (table 2)
- RIGHT JOIN − แสดงผลข้อมูลของ table ทางซ้ายที่ตรงเงื่อนไข (table 1) และ ข้อมูลของ table ทางขวาทั้งหมด (table 2)
- FULL JOIN − แสดงข้อมูลทั้งหมดของทั้ง 2 table ทั้งที่มีข้อมูลเหมือนกัน และ ไม่เหมือนกัน
- SELF JOIN − ทำการเชื่อมความสัมพันธ์ของ table ตัวเอง โดยเปรียบเสมือนสร้าง table ตัวเองเป็นอีก table หนึ่งมา JOIN กันเอง
- CARTESIAN JOIN หรือ CROSS JOIN − ทำการเอาข้อมูลทุก table มาเชื่อมกันทุกแถว ผลลัพธ์ที่ได้ของจำนวนบรรทัด จะเท่ากับผลคุณของ จำนวนบรรทัดทั้ง 2 table
Reference:
รวมคำสั่ง SQL Command พื้นฐานเบื้องต้น
Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://www.tutorialspoint.com
[…] เรื่อง SQL JOIN statement หนึ่งในคำสั่ง JOIN ที่นิยมและเป็นค่า […]
[…] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]
[…] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]
[…] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]
[…] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]
[…] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]
[…] 2 table ในรูปแบบ SQL JOIN statement หรือ การสร้างความสัมพันธ์ระหว่าง […]
[…] query ข้อมูลทั้งหมดของ table รวมถึงการทำ SQL Join, SQL Union, SQL Intersect และ SQL […]