مقدمه
در بسیاری از طراحیهای پایگاه داده، اطلاعات بر اساس ارتباط بین دادهها در جدولهای مختلف ذخیره میشوند. با این حال، اغلب نیاز پیش میآید که اطلاعات از چند جدول بهصورت همزمان استخراج شوند.
یکی از روشهای رایج برای این کار، استفاده از دستور JOIN در SQL است. JOIN با ترکیب جدولها، ردیفهایی را که به هم مرتبط هستند (معمولاً از طریق کلید خارجی و کلید اصلی) کنار هم قرار میدهد.
در این راهنما یاد میگیرید:
- چگونه کوئریهای JOIN بنویسید
- انواع JOIN چیست
- چطور دادهها از چند جدول ترکیب میشوند
- و چگونه با alias نوشتن کوئری را سادهتر کنید
پیشنیازها
برای انجام این آموزش نیاز دارید:
- یک سیستم مدیریت پایگاه داده رابطهای (مثل MySQL)
- یک دیتابیس با چند جدول نمونه
ایجاد دیتابیس و جداول نمونه
ساخت دیتابیس:
CREATE DATABASE joinsDB;
USE joinsDB;
جدول محصولات:
CREATE TABLE products (
productID int UNIQUE,
productName varchar(20),
price decimal (4,2),
PRIMARY KEY (productID)
);
جدول تیم فروش:
CREATE TABLE team (
empID int UNIQUE,
empName varchar(20),
productSpecialty int,
PRIMARY KEY (empID),
FOREIGN KEY (productSpecialty) REFERENCES products (productID)
);
جدول فروش:
CREATE TABLE sales (
saleID int UNIQUE,
quantity int,
productID int,
salesperson int,
PRIMARY KEY (saleID),
FOREIGN KEY (productID) REFERENCES products (productID),
FOREIGN KEY (salesperson) REFERENCES team (empID)
);
مفهوم JOIN در SQL
ساختار کلی:
SELECT table1.column1, table2.column2
FROM table1
JOIN table2
ON condition;
JOIN ردیفهایی را از دو جدول ترکیب میکند که شرط ON برای آنها برقرار باشد.
مثال JOIN ساده
SELECT team.empName, products.productName, products.price
FROM products
JOIN team
ON products.productID = team.productSpecialty;
👉 این کوئری:
- نام کارمند
- نام محصول تخصصی او
- قیمت محصول
را نمایش میدهد.
استفاده از USING
اگر نام ستونها یکسان باشد:
SELECT sales.saleID, sales.quantity, products.productName, products.price
FROM sales
JOIN products
USING (productID);
JOIN چند جدول
SELECT sales.saleID,
team.empName,
products.productName,
(sales.quantity * products.price)
FROM products
JOIN sales USING (productID)
JOIN team ON team.productSpecialty = sales.productID
WHERE team.empID = sales.salesperson;
👉 این کوئری درآمد فروش را محاسبه میکند.
انواع JOIN
1. INNER JOIN
فقط دادههای مشترک:
SELECT ...
FROM sales
JOIN team
ON sales.salesperson = team.empID;
2. LEFT JOIN
همه دادههای جدول چپ + دادههای مشترک:
SELECT ...
FROM sales
LEFT JOIN team
ON sales.salesperson = team.empID;
3. RIGHT JOIN
همه دادههای جدول راست + دادههای مشترک:
SELECT ...
FROM sales
RIGHT JOIN team
ON sales.salesperson = team.empID;
4. FULL JOIN
همه دادههای هر دو جدول (در MySQL پشتیبانی نمیشود)
استفاده از Alias (نام مستعار)
برای سادهتر شدن کوئری:
SELECT S.saleID, S.quantity,
P.productName,
(P.price * S.quantity) AS revenue
FROM sales AS S
JOIN products AS P
USING (productID);
جمعبندی
در این آموزش یاد گرفتید:
- JOIN چیست و چگونه کار میکند
- تفاوت انواع JOIN
- نحوه ترکیب چند جدول
- استفاده از alias برای خوانایی بهتر
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران