INNER JOIN เป็นการเชื่อมข้อมูลระหว่างตารางสองตาราง โดยจะเลือกเฉพาะแถวที่ตรงกันจากทั้งสองตารางเท่านั้น ซึ่งแถวที่ไม่มีข้อมูลตรงกันจะถูกละทิ้งไป
รูปแบบการใช้คำสั่ง INNER JOIN
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
ตารางตัวอย่าง
สมมติเรามีสองตาราง คือ Customers และ Orders
ตาราง Customers
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
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 ตรงกันออกมาแสดง
SELECT Customers.CustomerName, Orders.Product
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;จากตัวอย่างนี้ เลือกเฉพาะแถวที่ CustomerID จากตาราง Customers และ Orders ตรงกันเท่านั้น
ผลลัพธ์

การใช้ INNER JOIN กับหลายคอลัมน์
หากเราต้องการเชื่อมข้อมูลหลายคอลัมน์ เราสามารถใช้เงื่อนไข ON หลายๆ เงื่อนไขได้ เช่น
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
-- สร้างตาราง 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 ดังนี้
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 อีกครั้งเพื่อดึงข้อมูลราคาของสินค้า
ผลลัพธ์

