دستور inner join

آموزش دستور inner join در sql (به زبان ساده)

اساطیر زبان

SQL مخفف عبارت Structured Query Language به معنای زبان پرس و جو ساختاریافته است. SQL یک زبان پایگاه داده استاندارد برای ایجاد، نگهداری و بازیابی داده ها از پایگاه داده های رابطه ای مانند MySQL، Oracle و … می باشد.

join ترکیبی از حاصلضرب های دکارتی دو جدول را به دست آورده و سپس فرآیند انتخاب انجام می شود. در واقع در SQL از دستور join برای مقایسه و ترکیب و در نهایت برگرداندن ردیف هایی از دو یا چند جدول (بر اساس شرایط خاصی) استفاده می شود. Inner Join تفاوتی با join ندارد و از نظر خروجی و عملکرد مشابه هستند.

 


مای اسکیو ال

توی این پک فوق العاده، My Sql رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! همراه با فایل های تمرینی، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

inner join در sql

در این آموزش ابتدا درباره Inner Join در MySQL و سپسSQL Server بحث خواهیم کرد.

در کنار این مطلب حتما دانلود کنید: دانلود رایگان آموزش کامل sql (فیلم+جزوه pdf)

مراحل پیاده سازی Inner Join در MySQL

مرحله 1: ایجاد پایگاه داده

یک پایگاه داده به نام geeks با دستور CREATE با کد زیر ایجاد می کنیم.

CREATE DATABASE geeks;

مرحله 2: استفاده از پایگاه داده

دستور USE را برای انتخاب پایگاه داده و کار با آن می تویسیم.

USE geeks;

مرحله 3: اضافه کردن جدول ها

2 جدول با ویژگی های زیر به پایگاه داده اضافه می کنیم:

1- جدول اول برای مشخصات استاد با نام professor است که حاوی شناسه استاد، نام استاد و حقوق خواهد بود.

2- جدول دوم برای دروس با نام teaches است که شامل شناسه درس، شناسه استاد و نام درس است. شناسه استاد در جدول teaches کلید خارجی محسوب می شود.

با استفاده از کدهای زیر این جدول ها را به پایگاه داده انتخاب شده اضافه می کنیم:

جدول professor:

CREATE TABLE professor(

ID int,

Name varchar(20),

Salary int

);

جدول teaches:

CREATE TABLE teaches(

course_id int,

prof_id int,

course_name varchar(20)

);

مرحله 4: شرح جدول ها

می توانیم برای اطمینان از ساخت صحیح جدول ها، شرح هر جدول را با استفاده از دستور DESCRIBE در SQL به دست آوریم.

جدول professor:

DESCRIBE professor

خروجی

Field Type Null Key Default Extra
ID

int

YES NULL
Name

varchar(20)

YES NULL
Salary

int

YES NULL

جدول teaches:

DESCRIBE teaches

خروجی

Field Type Null Key Default Extra
course_id

int

YES NULL
prof_id

int

YES NULL
course_name

varchar(20)

YES NULL

مرحله 5: اضافه کردن ردیف ها

با استفاده از دستور INSERT ردیف های داده را به ترتیب زیر در دو جدول وارد می کنیم.

اضافه کردن ردیف های جدول professor:

INSERT INTO professor VALUES (1, ‘Rohan’, 57000);

INSERT INTO professor VALUES (2, ‘Aryan’, 45000);

INSERT INTO professor VALUES (3, ‘Arpit’, 60000);

INSERT INTO professor VALUES (4, ‘Harsh’, 50000);

INSERT INTO professor VALUES (5, ‘Tara’, 55000);

خروجی

اضافه کردن ردیف ها

اضافه کردن ردیف های جدول teaches:

INSERT INTO teaches VALUES (1, 1, ‘English’);

INSERT INTO teaches VALUES (1, 3, ‘Physics’);

INSERT INTO teaches VALUES (2, 4, ‘Chemistry’);

INSERT INTO teaches VALUES (2, 5, ‘Mathematics’);

خروجی

اضافه کردن ردیف های جدول teaches

مرحله 6: وضعیت فعلی جدول ها

برای اطمینان از داده های ورودی جدول و تأیید آنها از دستور SELECT برای انتخاب همه داده های جدول استفاده می کنیم.

جدول professor:

SELECT * FROM professor;

خروجی

ID Name Salary
1 Rohan 57000
2 Aryan 45000
3 Arpit 60000
4 Harsh 50000
5 Tara 55000

جدول teaches:

SELECT * FROM teaches;

خروجی

course_id prof_id course_name
1 1 English
1 3 Physics
2 4 Chemistry
2 5 Mathematics

مرحله 7: دستور INNER JOIN

با استفاده از Inner Join می توانیم اطلاعات موجود در دو جدول را بر اساس یک (یا چند) شرط ترکیب کنیم.

ساختار کلی:

SELECT comma_separated_column_names

FROM table1 INNER JOIN table2 ON condition

بعد از SELECT نام ستون های مورد نظر از جدول ها نوشته شده و با کاما از یکدیگر جدا می شوند.

در قسمت های table1 و table2 به ترتیب نام جدول اول و دوم نوشته می شود.

قسمت condition نیز برای نوشن شرایط است. از این قسمت برای ارتباط بین جدول ها استفاده می شود.

مثال زیر را در نظر بگیرید:

SELECT teaches.course_id, teaches.prof_id, professor.Name, professor.Salary

FROM professor INNER JOIN teaches ON professor.ID = teaches.prof_id;

ستون های teaches.course_id و teaches.prof_id از جدول درس و ستون های professor.Name و professor.Salary از جدول استاد براساس شرط professor.ID = teaches.prof_id انتخاب می شوند.

خروجی

دستور Inner Join حاصلضرب دکارتی دو جدول را به دست آورده سپس ردیف هایی از ستون های مشخص شده که شرط در آنها برقرار است را به عنوان نتیجه برمی گرداند و سایر ردیف ها که شرایط لازم را برآورده نمی کنند در جدول نتیجه جایی ندارند.

course_id prof_id Name Salary
1 1 Rohan 57000
1 3 Arpit 60000
2 4 Harsh 50000
2 5 Tara 55000

Inner Join در SQL Server

در تصویر زیر ساختار Inner Join در SQL Server برای دو جدول نشان داده شده است. در اینجا نیز می توانید از Inner Join یا JOIN برای اجرای Inner Join استفاده کنید. اگر فقط از کلمه کلیدی JOIN استفاده می کنید، نتیجه همان Inner JOIN را در SQL Server برمی گرداند.

Inner Join در SQL Server

چه زمانی از Inner JOIN در SQL Server استفاده می کنیم؟

اگر می خواهید تمام ردیف های جدول چپ را انتخاب کنید که مقدار کلید خارجی آنها غیر تهی است بنابراین باید از Inner Join استفاده کنید. به طور ساده تر همانطور که گفتیم برای بازیابی ستون های مشخص از هر دو جدول که شرط (ها) در ردیف متناظر آنها برقرار است باید از Inner Join استفاده کنید.

نحوه اجرای Inner Join در SQL Server

نحوه اجرای Inner Join در SQL Server را با یک مثال توضیح می دهیم. فرض می کنیم پایگاه داده ساخته شده و حالا دو جدول با نام های Company و Candidate می سازیم و ردیف های داده زیر را در آنها وارد خواهیم کرد.

نحوه اجرای Inner Join در SQL Server

جدول Company دو ستون به نام های CompanyId و CompanyName دارد و جدول Candidate حاوی سه ستون CandidateId، FullName و CompanyId است که CompanyId کلید خارجی آن محسوب می شود.

CREATE TABLE Company

(

CompanyId TinyInt Identity Primary Key,

CompanyName Nvarchar(50) NULL

)

GO

INSERT Company VALUES(‘DELL’)

INSERT Company VALUES(‘HP’)

INSERT Company VALUES(‘IBM’)

INSERT Company VALUES(‘Microsoft’)

GO

CREATE TABLE Candidate

(

CandidateId tinyint identity primary key,

FullName nvarchar(50) NULL,

CompanyId tinyint REFERENCES Company(CompanyId)

)

GO

INSERT Candidate VALUES(‘Ron’,1)

INSERT Candidate VALUES(‘Pete’,2)

INSERT Candidate VALUES(‘Steve’,3)

INSERT Candidate VALUES(‘Steve’,NULL)

INSERT Candidate VALUES(‘Ravi’,1)

INSERT Candidate VALUES(‘Raj’,3)

INSERT Candidate VALUES(‘Kiran’,NULL)

GO

حالا می خواهیم برای بازیابی داده ها از ستون های CandidateId، FullName، CompanyId و CompanyName از دو جدول یک کوئری بنویسیم. خروجی کوئری باید مطابق زیر باشد.

ستون های CandidateId، FullName، CompanyId و CompanyName

برای به دست آوردن نتایج تصویر بالا از Inner Join به شکل زیر استفاده می کنیم:

SELECT Cand.CandidateId,

Cand.FullName,

Cand.CompanyId,

Comp.CompanyName

FROM Candidate Cand

INNER JOIN Company Comp

ON Cand.CompanyId = Comp.CompanyId;

خروجی کوئری بالا 5 ردیف دارد. 2 ردیف در ستون CompanyId در جدول Candidate با مقدار NULL حذف شده اند.

به جای کلمه کلیدی INNER JOIN می توانیم از JOIN همانند زیر استفاده کنیم. JOIN و INNER JOIN مشابه هستند اما همیشه بهتر است از INNER JOIN استفاده کنید زیرا به طور صریح هدف شما را مشخص می کند.

SELECT Cand.CandidateId,

Cand.FullName,

Cand.CompanyId,

Comp.CompanyName

FROM Candidate Cand

JOIN Company Comp

ON Cand.CompanyId = Comp.CompanyId

استفاده از INNER JOIN برای سه جدول در SQL Server:

در اینجا نحوه استفاده از INNER JOIN برای سه جدول را بررسی می کنیم. جدول سوم Address را به دو جدول قبلی در پایگاه داده اضافه می کنیم.

استفاده از INNER JOIN برای سه جدول در SQL Server

برای ایجاد و پر کردن جدول Address از اسکریپت SQL زیر استفاده می کنیم.

CREATE TABLE Address

(

AddressId INT IDENTITY PRIMARY KEY,

CandidateId tinyint REFERENCES Company(CompanyId),

Country VARCHAR(50),

State VARCHAR(50),

City VARCHAR(50),

)

GO

INSERT INTO Address Values (1, ‘India’, ‘Odisha’, ‘BBSR’);

INSERT INTO Address Values (2, ‘India’, ‘Maharashtra’, ‘Mumbai’);

INSERT INTO Address Values (3, ‘India’, ‘Maharashtra’, ‘Pune’);

INSERT INTO Address Values (4, ‘India’, ‘Odisha’, ‘Cuttack’);

GO

ساختار کلی Inner Join برای سه جدول در SQL Server به فرم زیر است:

ساختار کلی Inner Join برای سه جدول در SQL Server

در این مثال پیوند سه جدول در SQL Server به شکل زیر نوشته می شود:

SELECT Cand.CandidateId,

Cand.FullName,

Cand.CompanyId,

Comp.CompanyName,

Addr.Country,

Addr.State,

Addr.City

FROM Candidate Cand

INNER JOIN Company Comp

ON Cand.CompanyId = Comp.CompanyId

INNER JOIN Address Addr

ON Addr.CandidateId = Cand.CandidateId;

با اجرای کوئری بالا خروجی زیر را دریافت خواهید کرد. فقط سه رکورد به دست آمده است، زیرا هر سه رکورد در هر سه جدول وجود دارد.

نتیجه نهایی

علاوه بر این می توانید برای پیوند سه جدول از انواع مختلف Join استفاده کنید. به عنوان مثال در کوئری زیر برای پیوند اول بین جدول های Candidate و Company از Inner JOIN و برای پیوند دوم بین جدوهای Candidate و Address از LEFT JOIN استفاده کرده ایم.

SELECT Cand.CandidateId,

Cand.FullName,

Cand.CompanyId,

Comp.CompanyName,

Addr.Country,

Addr.State,

Addr.City

FROM Candidate Cand

INNER JOIN Company Comp

ON Cand.CompanyId = Comp.CompanyId

LEFT JOIN Address Addr

ON Addr.CandidateId = Cand.CandidateId;

خروجی

خروجی

حتما دانلود کنید: آموزش پایگاه داده از صفر تا صد با 23 درس رایگان+ جزوه PDF

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست