PostgreSQL

سرفصل دروس

LEFT JOIN

مقدمه ای بر دستور LEFT JOIN در PostgreSQL 

فرض کنید دو جدول A و B بصورت زیر داریم : 

جدول A و B

داده های جدول B با داده های جدول A توسط فیلد fka در ارتباط هستند. هر ردیف جدول A می تواند با صفر یا چند ردیف از جدول B در ارتباط باشند. هر ردیف از جدول B می تواند فقط با یک ردیف از جدول A در ارتباط باشد.  اگر بخواهید ردیف هایی از جدول A که با ردیف های جدول B در ارتباط هستند را انتخاب نمایید می توانید از INNER JOIN استفاده نمایید. اگر بخواهید ردیف هایی از جدول A که با ردیف های جدول B ممکن است در ارتباط باشند یا نباشند را انتخاب نمایید می توانید از LEFT JOIN استفاده نمایید. در این حالت جاهایی که هیچ تطبیقی در جدول B وجود ندارد مقادیر ستون ها در جدول B برابر NULL می باشد. کد زیر دستور زبان LEFT JOIN را نمایش می دهد: 

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

برای ارتباط جدول A با جدول B شما نیاز دارید : 

  • ستون های مورد نیازتان را در قسمت SELECT مشخص نمایید. 
  • جدول سمت چپ را (برای مثال A ) که می خواهید تمام ردیفهایش انتخاب شود را در قسمت FROM مشخص نمایید. 
  • جدول سمت راست را (برای مثال B ) را در LEFT JOIN مشخص نمایید. و سپس شرط این ارتباط را مشخص نمایید. 

دستور LEFT JOIN تمام ردیف های جدول چپ (A) را به همراه ترکیب آن با ردیف های جدول سمت راست (B) حتی اگر ردیف متناظری وجود نداشته باشد، بر میگرداند. 

دیاگرام زیر نمایی از LEFT JOIN را نمایش می دهد. 

 نمایی از LEFT JOIN

 

مثال LEFT JOIN در PostgreSQL 

به جداول inventory و film توجه نمایید. 

جداول inventory و film

 

هر ردیف در جدول film می تواند با صفر یا چند ردیف جدول inventory در ارتباط داشته باشد. هر ردیف در جدول inventory می تواند فقط با یک ردیف از جدول film در ارتباط باشد. شما می توانید از LEFT JOIN برای ارتباط دو جدول inventory و film استفاده نمایید.

SELECT
 film.film_id,
 film.title,
 inventory_id
FROM
 film
LEFT JOIN inventory ON inventory.film_id = film.film_id;

LEFT JOIN برای ارتباط دو جدول inventory و film

 

از آنجاییکه بعضی ردیف ها در جدول film متناظری در جدول inventory ندارند مقادیر آن برابر NULL می باشد. شما می توانید با استفاده از دستور WHERE فیلم هایی که در inventory  نیستند را انتخاب نمایید. 

SELECT
 film.film_id,
 film.title,
 inventory_id
FROM
 film
LEFT JOIN inventory ON inventory.film_id = film.film_id
WHERE
 inventory.film_id IS NULL;

فیلم هایی که در inventory  نیستند

از این تکنیک می توانید برای مواردی که نیاز است داده های یک جدول که در جدول دیگر متناظری ندارد را انتخاب کنید، استفاده نمایید. 

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