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 ‘ ) ; |
کد | ||||||
|
خروجی |
نکته : تفاوت این حالت با مثال های قبلی در این است که ستون های نمایش داده شده فقط از یک جدول ( جدول Select بیرونی ) نمایش داده می شوند .
مثال : نام دروسی را ارائه دهید که دانشجو با شماره دانشجویی ۱۰۲۵۴۸۶۱ انتخاب کرده است :
مثال | |||||||
Select Coures ID , CoTitle From Courses Where Course ID IN ( Select Course ID From Selection Where Student ID = 10254861 ) ; |
کد | ||||||
|
خروجی |
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 = ‘ نظری ‘ )) ; |
کد | ||||||||
|
خروجی |