sql command

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 พื้นฐานเบื้องต้น

Database, Oracle, MySQL

 

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com, https://www.tutorialspoint.com

8 Thoughts to “Database SQL – JOIN คือ การเชื่อมความสัมพันธ์ระหว่าง table ด้วย column”

  1. […] เรื่อง SQL JOIN statement หนึ่งในคำสั่ง JOIN ที่นิยมและเป็นค่า […]

  2. […] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]

  3. […] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]

  4. […] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]

  5. […] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]

  6. […] เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ […]

  7. […] 2 table ในรูปแบบ SQL JOIN statement หรือ การสร้างความสัมพันธ์ระหว่าง […]

  8. […] query ข้อมูลทั้งหมดของ table รวมถึงการทำ SQL Join, SQL Union, SQL Intersect และ SQL […]

Leave a Reply