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”
รูปแบบ (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 พื้นฐานเบื้องต้น
Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://www.tutorialspoint.com