SubQuery *(Query های تودرتو) :

Query ای است که در دل Query دیگری قراردارد.

SubQuery ها می توانند در قسمت های SELECT ، FROM و WHERE بیایند .

کد:

کد:
SELECT * * * * *<Clumn_List>FROM *
 * * * * <data_Sourse>
WHERE * * * * *
 <Condition>

__ *SubQuery هایی در قسمت SELECT می آیند : * *

نکته : SubQuery که در قسمت SELECT می آید باید فقط یک سطر و یک ستون را برگرداند که در نتیجه می شود یک مقدار.

سوال : Query بنوسید که از جدول Students ، اطلاعاتی *شامل ID ، FirstName و LastName را نمایش دهد و در کنار این اطلاعات ، ستونی دیگر که حاوی کمترین کد از جدول CityInfo می باشد را نیز نمایش دهد .


کد:

کد:
SELECT * * * MIN ( CID ) FROM * * CityInfo

دستور بالا کمترین کد از جدول CityInfo را نمایش می دهد ، حال باید این SELECT را درون SELECT قسمت اول سوال و درون یک پرانتز بزاریم ، به این شکل :


کد:

کد:
SELECT * * * *ID , * * * FirsName , * * *LastName , *
 * ( *SELECT * * * * * * * MIN ( CID ) * * *FROM * * * * * *CityInfo *) *AS * *MinCID
FROM * * * Student


SubQuery هایی در قسمت FROM می آیند : * *

نکته : SubQuery که در قسمت FROM می آید می تواند حاوی چندین سطر و ستون باشد.

مثال : از جدول Student ، ستون ID را با نام جدید ،ستون FirstName و ستون LastName را با هم ادغام و در ستونی با نام جدید نمایش دهید به شرط اینکه معدل آنها بالای 15 باشد .



کد:

کد:
SELECT * * *
 * Code *+ *100 * * AS * * NewCode
 , FullName 
, * *2 * * Average * * AS * * NewAvgFROM * * * 
* *( *SELECT * * * ** *ID * * *AS * * *Code , * * * * * * * * 
* * * * FirstName *+ *‘ * ‘ *+ *LastName * * *AS * * *FullName , 
Average * * * 
* * * * FROM * *Students * * * * *
 * WHERE * * * * * * * * * * * 
* * Average * > * 15 *  ) * * myTBL
 WHERE * * * * *Code *+ *100 * > * 103




SELECT داخل پرانتز یک منبع داده ( data_Source ) برای ما می باشد .

__ *SubQuery هایی در قسمت WHERE می آیند : *

نکته : وقتی از SELECT به عنوان یک مقدار در WHERE استفاده می کنیم ، می آید باید یک سطر و یک ستون را برگرداند . *

مثال : از جدول CityInfo مشخصات شهری را برگردانید که دارای بیشترین جمعیت است.



کد:

کد:
SELECT ** FROM * * 
* * CityInfoWHERE * * * * *Population * * = *
( * SELECT * * * Max *( Population ) * * * * * * * * * * *
 * * * * * * * * * *FROM * * * * * * * * * * * * * * * * * * * * * * * *
 * *CityInfo * *)


SELECT داخل پرانتز شهر دارای بیشترین جمعیت را مشخص می کند *و درون *Population قرار می دهد سپس طبق این شرط اطلاعات این شهر را نمایش می دهد .