Select های تو در تو :

می توان در درون یک دستور Select ، دستور Select دیگری را تعریف کرد . در این حالت ابتدا دستور Select درونی اجرا شده و نتایج مورد نظر خود را که سطرهایی از جدول مربوط به آن هستند را استخراج کرده و آنرا به Select بیرونی انتقال می دهد . سپس Select بیرونی نیز اجرا شده و نتایج استخراجی خود را با استفاده از فیلد مشترک بین ۲ جدول با سطرهای Select درونی پیوند زده و سطرهای مطابق با شروط تعیین شدهخ را نمایش می دهد .
از حالت Select های تو در تو برای پیوند جدول ها استفاده می شود و برای زمانی مناسب است که بخواهیم ستون های خروجی در دستور Select فقط از یک جدول که در بیرونی ترین Select تعریف شده اند ، نمایش داده شوند .
نکته : به تعداد دستورات Select تو در تو ، سطح آن می گویند .

Select های ۲ سطحی :

در این حالت یک دستور Select در درون دستور Select دیگری تعریف می شود و برای پیوند ۲ جدول با استفاده از فیلد مشترک استفاده می شود . نتایج خروجی فقط می تواند شامل سطرهای از جدول Select بیرونی باشد .
شکل کلی پیوند ۲ جدول بااستفاده از Select 2 سطحی به صورت زیر است :

Select  نام ستون های مورد نظر برای نمایش از جدول بیرونی
From  نام جدول ۱
Where  نام فیلد مشترک ۲ جدول  IN  ( Select  نام فیلد مشترک ۲ جدول
From  نام جدول ۲
Where شرط ها … ) ;

مثال های قسمت های قبل پیوند جدول ها را با استفاده از Select های تو در تو بازنویسی می کنیم .
مثال : نام و نام خانوادگی دانشجویانی را ارائه دهید که در ترم ۱ سال تحصیلی ۸۵ – ۸۶ ، درس با کد ۱۰۱۲ را انتخاب کرده اند :

مثال
Select  Name , Family
From  Students
Where Student ID  IN ( Select Student ID
From   Selection
Where   Course ID = 1012 AND Term = 1 AND Year = ‘ 85 – 86 ‘ ) ;
کد
Name Family
Ehsan Amiri
Ahmad Rezaee
خروجی

نکته : تفاوت این حالت با مثال های قبلی در این است که ستون های نمایش داده شده فقط از یک جدول ( جدول Select بیرونی ) نمایش داده می شوند .

مثال : نام دروسی را ارائه دهید که دانشجو با شماره دانشجویی ۱۰۲۵۴۸۶۱ انتخاب کرده است :

مثال
Select Coures ID , CoTitle
From Courses
Where Course ID IN ( Select Course ID
From Selection
Where Student ID = 10254861 ) ;
کد
Course ID Course Title
۱۰۱۱ پایگاه داده
۱۰۱۳ زبان تخصصی
خروجی

 

Select های ۳ سطحی :

در این حالت ۳ دستور Select به صورت تو در تو تعریف شده اند و برای پیوند ۳ جدول به صورت ۲ به ۲ و با استفاده از فیلد های مشترک استفاده می شود . نتایج خروجی فقط می تواند شامل ستون هایی از بیرونی ترین Select تعریف شده باشد . در این حالت از جدول دوم برای پیوند جدول های ۱ و ۳ استفاده می شود .
شکل کلی پیوند ۳ جدول با استفاده از Select های ۳ سطحی به صورت زیر است :

Select   نام ستون های مورد نظر جهت نمایش از جدول ۱
From  نام جدول ۱
where   نام فیلد مشترک جدول ۱ و ۲  IN ( Select  نام فیلد مشترک جدول ۱ و۲
From  نام جدول ۲
Where  نام فیلد مشترک جدول ۲ و ۳  IN ( Select   نام فیلد مشترک جدول ۲ و ۳
From   نام جدول ۳
Where  بقیه شرط ها … )) ;

مثال : نام و نام خانوادگی دانشجویانی را ارائه دهید که حداقل یک درس از نوع نظری را انتخاب کرده باشد :

مثال
Select Name , Family
From Students
where Student ID IN ( Select Student ID
From Selection
Where Course ID  IN ( Select Course ID
From Courses
Where CoType = ‘ نظری ‘ )) ;
کد
Name Family
Zahra Hosini
Sahar Ahamadi
Hesam Razavi
خروجی