SQL การใช้งาน INNER JOIN

INNER JOIN เป็นการเชื่อมข้อมูลระหว่างตารางสองตาราง โดยจะเลือกเฉพาะแถวที่ตรงกันจากทั้งสองตารางเท่านั้น ซึ่งแถวที่ไม่มีข้อมูลตรงกันจะถูกละทิ้งไป

รูปแบบการใช้คำสั่ง INNER JOIN

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

ตารางตัวอย่าง

สมมติเรามีสองตาราง คือ Customers และ Orders

ตาราง Customers

SQL
CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(255),
    Country VARCHAR(100)
);

INSERT INTO Customers (CustomerID, CustomerName, Country) VALUES
(1, 'John Doe', 'USA'),
(2, 'Jane Smith', 'UK'),
(3, 'Maria Garcia', 'Mexico'),
(4, 'Yuki Mori', 'Japan');

ตาราง Orders

SQL
CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    Product VARCHAR(255),
    Quantity INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

INSERT INTO Orders (OrderID, CustomerID, Product, Quantity) VALUES
(101, 1, 'Laptop', 2),
(102, 3, 'Phone', 1),
(103, 1, 'Keyboard', 5),
(104, 2, 'Monitor', 3),
(105, 4, 'Mouse', 1);

ตัวอย่างการใช้งาน INNER JOIN

การเชื่อมข้อมูลระหว่างสองตาราง

ในตัวอย่างนี้ เราจะใช้ INNER JOIN เพื่อนำข้อมูล CustomerName จากตาราง Customers และข้อมูล Product จากตาราง Orders ที่มี CustomerID ตรงกันออกมาแสดง

SQL
SELECT Customers.CustomerName, Orders.Product
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

จากตัวอย่างนี้ เลือกเฉพาะแถวที่ CustomerID จากตาราง Customers และ Orders ตรงกันเท่านั้น

ผลลัพธ์

การใช้ INNER JOIN กับหลายคอลัมน์

หากเราต้องการเชื่อมข้อมูลหลายคอลัมน์ เราสามารถใช้เงื่อนไข ON หลายๆ เงื่อนไขได้ เช่น

SQL
SELECT Customers.CustomerName, Orders.Product, Orders.Quantity
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
AND Orders.Quantity > 1;

จากตัวอย่างนี้ เงื่อนไข AND Orders.Quantity > 1 จะเลือกเฉพาะแถวที่มี Quantity มากกว่า 1 ด้วย

ผลลัพธ์

การใช้ INNER JOIN หลายตาราง

เราสามารถใช้ INNER JOIN กับตารางมากกว่าสองตารางได้ ตัวอย่างเช่น ถ้ามีตารางที่สามชื่อ Products ที่เก็บข้อมูลสินค้าดังนี้

ตาราง Products

SQL
-- สร้างตาราง Products
CREATE TABLE Products (
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(255),
    Price DECIMAL(10, 2)
);

-- แทรกข้อมูลลงในตาราง Products
INSERT INTO Products (ProductID, ProductName, Price)
VALUES
(201, 'Laptop', 1000),
(202, 'Phone', 500),
(203, 'Keyboard', 100),
(204, 'Monitor', 300),
(205, 'Mouse', 50);

เขียนคำสั่ง SQL ดังนี้

SQL
SELECT Customers.CustomerName, Orders.Product, Products.Price
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
INNER JOIN Products
ON Orders.Product = Products.ProductName;

ในตัวอย่างนี้ เราเชื่อมข้อมูลจากสามตารางด้วยการใช้ INNER JOIN สองครั้ง โดยเชื่อมตาราง Customers กับ Orders และเชื่อมตาราง Orders กับ Products อีกครั้งเพื่อดึงข้อมูลราคาของสินค้า

ผลลัพธ์

แชร์เรื่องนี้