sql command

Database SQL – LEFT JOIN

จากบทความ เรื่อง SQL JOIN statement โดยปกติจะใช้สร้างความสัมพันธ์ของ column ระหว่าง table ที่เหมือนกัน ซึ่ง SQL LEFT JOIN ก็เช่นกัน แต่จะอาศัย table ด้านซ้าย หรือ table แรก เป็นข้อมูลตั้งต้นหลัก โดยข้อมูลบรรทัดที่ table ซ้ายมี แต่ table ขวา ไม่มี จะถือว่าเป็นข้อมูลใหม่ได้ด้วย โดยข้อมูลใหม่ที่ว่าจะมีแค่ข้อมูลจาก table ซ้ายเท่านั้นส่วน column ที่เกิดจาก table ขวา จะมีค่าเป็น NULL เพราะไม่มีข้อมูล แต่สำหรับบรรทัดที่มีเฉพาะ table ขวา แต่ไม่มีใน table ซ้าย จะถือว่าไม่เป็นข้อมูลใหม่ เราสามารถเรียกอีกอย่างว่า “LEFT OUTER JOIN”

sql-left-outer-join

 

รูปแบบ (Syntax)

SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;

 

ตัวอย่าง SQL LEFT 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 |
+-----+---------------------+-------------+--------+

 

คำสั่ง LEFT JOIN statement

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

 

ผลลัพธ์ที่ได้ของ SQL LEFT JOIN คือเราสามารถนำเอาข้อมูล column จากทั้ง 2 table มาเชื่อมต่อกันโดยอาศัย table ซ้าย หรือ table CUSTOMERS เป็นหลัก ซึ่งถ้าไม่มีข้อมูลใน table ขวา หรือ table ORDERS จะถือว่าข้อมูลเป็น NULL แทน

+----+----------+--------+---------------------+
| ID | NAME     | AMOUNT | DATE                |
+----+----------+--------+---------------------+
|  1 | Ramesh   |   NULL | NULL                |
|  2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|  3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|  3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|  4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
|  5 | Hardik   |   NULL | NULL                |
|  6 | Komal    |   NULL | NULL                |
|  7 | Muffy    |   NULL | NULL                |
+----+----------+--------+---------------------+

 

 

Reference:

รวมคำสั่ง SQL Command พื้นฐานเบื้องต้น

Database, Oracle, MySQL

 

 

Author: Suphakit Annoppornchai

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

One Thought to “Database SQL – LEFT JOIN คือ สร้างความสัมพันธ์ 2 table โดยใช้ table ซ้ายเป็นหลัก”

  1. […] LEFT JOIN − แสดงผลข้อมูลของ table ทางซ้ายทั้งหมด (table 1) และ ข้อมูลของ table ทางขวาที่ตรงเงื่อนไข (table 2) […]

Leave a Reply