مقداد شکیبا

  • ۱
  • ۰

پیوند جدول ها

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

 

آشنائی با کاربرد join

فرض کنید جدول های Personnel و City با داده های زیر موجود است :

Personel

CityID

Family

Name

ID

205

Shahrokhi

Hosein

1

202

Changizi

Ali

2

205

Moshtaghi

Davood

3

201

Arab

Hadi

4

203

Pahlavan

Amin

5

City

Name

ID

Tehran

201

Isfahan

202

Mashhad

203

Tabriz

204

Shiraz

205

Booshehr

206

 

 

 

 

 

 

فیلد CityID در جدول Personel از طریق اشاره به فیلدID  از جدول City شهر یک کارمند را مشخص می کند. به  CityID  در اصطلاح کلید خارجی (Foreign key - FK) می گویند.

می خواهیم گزارشی از اسامی کارمندان  تهیه کنیم به نحوی که به جای شناسه شهر (CityID)  نام شهر نمایش داده شود :

SELECT  Personel.Family , City.Name

FROM Personel , City

WHERE Personel.CityID = City.ID

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

سئوال 1 : اگر در مثال بالا شرط را کاملا حذف کنیم چه نتیجه ای بدست می آید؟

سئوال 2 : با توجه به اینکه نام جداول پس از FROM آمده است، آیا ذکر آنها در مقابل عبارت SELECT اجباریست؟

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

SELECT   Personel.Family , City.Name

FROM    Personel

INNER  JOIN  City

ON   Personel.CityID = City.ID

 

با استفاده از عبارت AS می توان دستورات را خلاصه نویسی کرد. این روش خصوصا زمانی که حجم و پیچیدگی دستورات زیاد است راهگشا خواهد بود.

SELECT   P.Family , C.Name

FROM     Personel  AS   P

INNER    JOIN  City  AS   C

ON   P.CityID = C.ID

 تمرین : با استفاده از جدول ها و داده های بالا، دستورات زیر را اجرا و درمورد نتایج و کاربردهای احتمالی بحث کنید.


SELECT   P.Family , C.Name

FROM     Personel  AS   P

RIGHT   JOIN  City  AS   C

ON   P.CityID = C.ID

 

SELECT   P.Family , C.Name

FROM     Personel  AS   P

LEFT     JOIN  City  AS   C

ON   P.CityID = C.ID

SELECT   P.Family , C.Name

FROM     Personel  AS   P

FULL   JOIN  City  AS   C

ON   P.CityID = C.ID

 

SELECT   P.Family , C.Name

FROM     Personel  AS   P

Cross   JOIN  City  AS   C



تمرین : مثال های قبلی همگی درباره پیوند دو جدول بودند. آیا می توانید مثالی کاربردی و دستوراتی برای پیوند سه جدول ارائه دهید؟

تمرین : مثالی ارائه دهید که در آن لازم باشد یک جدول با خودش پیوند زده شود. آیا می توانید دستورات SQL لازم را بنویسید؟


  • ۹۰/۰۶/۰۱
  • مقداد شکیبا

INNER JOIN

JOIN

LEFT JOIN

RIGHT JOIN

SQL

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی