sql command

Database SQL – RIGHT JOIN

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

sql-right-outer-join

 

รูปแบบ (Syntax)

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

 

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

 

คำสั่ง RIGHT JOIN statement

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

 

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

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
+------+----------+--------+---------------------+

 

 

Reference:

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

Database, Oracle, MySQL

 

 

Author: Suphakit Annoppornchai

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

Leave a Reply