آشنایی با SQL – بخش یازدهم – آشنایی با پیوند جدول ها

چنانچه بخواهیم گزارشی تهیه کنیم که در تولید آن، بازیابی و ترکیب داده های بیش از یک رکورد یا یک جدول بر اساس رابطه ای که مابین آنها وجود دارد، مورد نیاز باشد از پیوند استفاده می کنیم.
آشنائی با کاربرد join
فرض کنید جدول های Personnel و City با داده های زیر موجود است :


فیلد CityID در جدول Personel از طریق اشاره به فیلدID از جدول City شهر یک کارمند را مشخص می کند. به CityID در اصطلاح کلید خارجی (Foreign key – FK) می گویند.
می خواهیم گزارشی از اسامی کارمندان تهیه کنیم به نحوی که به جای شناسه شهر (CityID) نام شهر نمایش داده شود :
SELECT Personnel.Family, City.Name
FROM Personnel, City
WEHERE Personnel.CityID = City.ID;
گزارش دارای دو ستون شامل فامیل از جدول کارمند و نام از جدول شهر خواهد بود. و واضح است که این اطلاعات در یکی از این جداول موجود نیست. فامیل یک کارمند در صورتی در کنار نام یک شهر قرار می گیرد که شناسه آن شهر در ردیف آن کارمند باشد.
سئوال ۱ : اگر در مثال بالا شرط را کاملا حذف کنیم چه نتیجه ای بدست می آید؟
سئوال ۲ : با توجه به اینکه نام جداول پس از FROM آمده است، آیا ذکر آنها در مقابل عبارت SELECT اجباریست؟
روشی که در بالا برای پیوند استفاده کردیم، روشی قدیمی است، هرچند کار می کند اما نسبت به روش جدید تاکید یا صراحت کمتری در بیان پیوند دارد. خروجی دستور زیر کاملا با دستور قبل یکسان است. این نوع پیوند به پیوند طبیعی یا داخلی مشهور است.
SELECT Personnel.Family, City.Name
FROM Personnel
INNER JOIN City
ON Personnel.CityID = City.ID;
با استفاده از عبارت AS می توان دستورات را خلاصه نویسی کرد. این روش خصوصا زمانی که حجم و پیچیدگی دستورات زیاد است راهگشا خواهد بود.
SELECT P.Family, C.Name
FROM Personnel AS P
INNER JOIN City AS C
ON P.CityID = C.ID;
تمرین : با استفاده از جدول ها و داده های بالا، دستورات زیر را اجرا و درمورد نتایج و کاربردهای احتمالی بحث کنید.
SELECT P.Family, C.Name
FROM Personnel AS P
RIGHT JOIN City AS C
ON P.CityID = C.ID;
SELECT P.Family, C.Name
FROM Personnel AS P
LEFT JOIN City AS C
ON P.CityID = C.ID;
SELECT P.Family, C.Name
FROM Personnel AS P
FULL JOIN City AS C
ON P.CityID = C.ID;
SELECT P.Family, C.Name
FROM Personnel AS P
CROSS JOIN City AS C;
تمرین : مثال های قبلی همگی درباره پیوند دو جدول بودند. آیا می توانید مثالی کاربردی و دستوراتی برای پیوند سه جدول ارائه دهید؟
تمرین : مثالی ارائه دهید که در آن لازم باشد یک جدول با خودش پیوند زده شود. آیا می توانید دستورات SQL لازم را بنویسید؟
مقالات مرتبط
- آشنایی با SQL – بخش دهم – آشنایی با Group By
- آشنایی با SQL – بخش نهم – آشنایی با Aggregate Functions
- آشنایی با SQL – بخش هشتم – آشنایی با دستور SELECT
- آشنایی با SQL – بخش هفتم – آشنایی با AND, OR و NOT
- آشنایی با SQL – بخش ششم – آشنایی با دستور DELETE
- آشنایی با SQL – بخش پنجم – آشنایی با دستور UPDATE
- آشنایی با SQL – بخش چهارم – آشنایی با دستور INSERT
- آشنایی با SQL – بخش سوم – آشنایی با دستور CREATE
- آشنایی با SQL – بخش اول – SQL چیست؟
- آشنایی با SQL – بخش دوم – انواع داده