PostgreSQL

سرفصل دروس

INNER JOIN

در این آموزش می خواهیم شیوه ارتباط بین جداول که یکی از مهمترین مفاهیم است را آموزش بدهیم. چندین شیوه مختلف ارتباط بین جداول وجود دارد مانند : INNER JOIN, OUTER JOIN و self-join. در این آموزش بر روی ارتباط INNER JOIN تمرکز می کنیم. فرض کنید می خواهید از دو جدول A  و B اطلاعاتی را دریافت نمایید. جدول B دارای فیلد fka می باشد که با کلید اصلی جدول A در ارتباط می باشد. 

جدول A و B

 

برای دریافت اطلاعات از هر دو جدول از عبارت INNER JOIN در دستور SELECT استفاده میکنیم: 

SELECT
 A.pka,
 A.c1,
 B.pkb,
 B.c2
FROM
 A
INNER JOIN B ON A .pka = B.fka;

برای ارتباط جدول A با جدول B : 

  • لیست تمام ستون ها در هر دو جدول را که می خواهید، در دستور SELECT وارد نمایید. 
  • جدول اصلی را در دستور FROM قرار دهید. 
  • سپس جدولی که با جدول اصلی در ارتباط می باشد را توسط دستور INNER JOIN مشخص نمایید. سپس شرط ارتباط را بعد از ON قرار دهید.

PostgreSQL برای هر ردیف در جدول A، تمام ردیف های جدول B را بررسی می کند که با شرط تطابق دارد یا خیر (A.pka = B.fka). اگر تطابقی پیدا کند ستون های هر دو جدول را ترکیب می نماید و نتیجه را بر می گرداند.  کلید اصلی (pka) و کلید خارجی (fka) بصورت معمول ایندکس می شوند. PostgreSQL عبارات ایندکس شده را بررسی می نماید که بسیار روند سریعی می باشد. در بعضی مواقع جدول A و B دارای ستون های هم نام هستند، پس باید بصورت table_name.column_name آنها را مشخص نمایید. در مواقعی که نام جدول طولانی می باشد می توانید از نام مستعار جدول مانند tbl بصورت tbl.column_name استفاده نمایید. 

دیاگرام زیر دستور INNER JOIN را در PostgreSQL نمایش می دهد:

دستور INNER JOIN  در PostgreSQL

 

مثال INNER JOIN برای ارتباط دو جدول در PostgreSQL

به دو جدول customer و payment توجه نمایید: 

دو جدول customer و payment

 

هر مشتری می تواند صفر یا چند پرداخت داشته باشد. و هر پرداخت فقط متعلق به یک مشتری می باشد. فیلد customer_id ارتباط بین دو جدول را مشخص می نماید. برای ارتباط دو جدول می توانید از دستور INNER JOIN استفاده نمایید: 

SELECT
 customer.customer_id,
 first_name,
 last_name,
 email,
 amount,
 payment_date
FROM
 customer
INNER JOIN payment ON payment.customer_id = customer.customer_id;

ارتباط دو جدول با INNER JOIN

 

شما می توانید از دستور ORDER BY برای مرتب سازی نتیجه استفاده نمایید: 

SELECT
 customer.customer_id,
 first_name,
 last_name,
 email,
 amount,
 payment_date
FROM
 customer
INNER JOIN payment ON payment.customer_id = customer.customer_id
ORDER BY
 customer.customer_id;

استفاده از ORDER BY برای مرتب سازی در INNER JOIN

همچنین می توانید از WHERE برای فیلتر کردن اطلاعات استفاده نمایید. 

SELECT
 customer.customer_id,
 first_name,
 last_name,
 email,
 amount,
 payment_date
FROM
 customer
INNER JOIN payment ON payment.customer_id = customer.customer_id
WHERE
 customer.customer_id = 2;

 از WHERE برای فیلتر کردن اطلاعات استفاده نمایید

 

مثال INNER JOIN برای ارتباط سه جدول در PostgreSQL

دیاگرام زیر نمایی از سه جدول staff, payment, customer را نمایش می دهد. 

نمایی از سه جدول staff, payment, customer

برای ارتباط سه جدول INNER JOIN دوم را بعد از INNER JOIN اول قرار بدهید:

SELECT
 customer.customer_id,
 customer.first_name customer_first_name,
 customer.last_name customer_last_name,
 customer.email,
 staff.first_name staff_first_name,
 staff.last_name staff_last_name,
 amount,
 payment_date
FROM
 customer
INNER JOIN payment ON payment.customer_id = customer.customer_id
INNER JOIN staff ON payment.staff_id = staff.staff_id;

INNER JOIN برای ارتباط سه جدول در PostgreSQL

 

اشتراک گذاری :