SQL - การใช้ Joins

SQL Joinsอนุประโยคใช้เพื่อรวมระเบียนจากตารางสองตารางขึ้นไปในฐานข้อมูล JOIN เป็นวิธีการรวมฟิลด์จากสองตารางโดยใช้ค่าร่วมกันสำหรับแต่ละตาราง

พิจารณาสองตารางต่อไปนี้ -

Table 1 - ตารางลูกค้า

+----+----------+-----+-----------+----------+
| 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 - ตารางคำสั่งซื้อ

+-----+---------------------+-------------+--------+
|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 |
+-----+---------------------+-------------+--------+

ตอนนี้ให้เราเข้าร่วมสองตารางนี้ในคำสั่ง SELECT ของเราดังที่แสดงด้านล่าง

SQL> SELECT ID, NAME, AGE, AMOUNT
   FROM CUSTOMERS, ORDERS
   WHERE  CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้

+----+----------+-----+--------+
| ID | NAME     | AGE | AMOUNT |
+----+----------+-----+--------+
|  3 | kaushik  |  23 |   3000 |
|  3 | kaushik  |  23 |   1500 |
|  2 | Khilan   |  25 |   1560 |
|  4 | Chaitali |  25 |   2060 |
+----+----------+-----+--------+

ที่นี่เป็นที่สังเกตได้ว่าการรวมจะดำเนินการในส่วนคำสั่ง WHERE สามารถใช้ตัวดำเนินการหลายตัวเพื่อเข้าร่วมตารางเช่น =, <,>, <>, <=,> =,! =, ระหว่าง, LIKE และ NOT; สามารถใช้ร่วมกับตารางได้ อย่างไรก็ตามตัวดำเนินการที่พบมากที่สุดคือเท่ากับสัญลักษณ์

มีการรวมประเภทต่างๆใน SQL -

  • INNER JOIN - ส่งคืนแถวเมื่อมีการจับคู่ในทั้งสองตาราง

  • LEFT JOIN - ส่งคืนแถวทั้งหมดจากตารางด้านซ้ายแม้ว่าจะไม่มีรายการที่ตรงกันในตารางด้านขวา

  • RIGHT JOIN - ส่งคืนแถวทั้งหมดจากตารางด้านขวาแม้ว่าจะไม่มีรายการที่ตรงกันในตารางด้านซ้าย

  • FULL JOIN - ส่งคืนแถวเมื่อมีการจับคู่ในตารางใดตารางหนึ่ง

  • SELF JOIN - ใช้เพื่อรวมตารางเข้ากับตัวเองราวกับว่าตารางเป็นสองตารางโดยเปลี่ยนชื่อตารางอย่างน้อยหนึ่งตารางในคำสั่ง SQL เป็นการชั่วคราว

  • CARTESIAN JOIN - ส่งคืนผลิตภัณฑ์คาร์ทีเซียนของชุดของเรกคอร์ดจากตารางที่เข้าร่วมสองตารางขึ้นไป

ตอนนี้ให้เราคุยรายละเอียดการรวมเหล่านี้แต่ละรายการ