سلام...
توصيه مي كنم حتما" در رابطه با TSql Querying تحقيق كنيد.
فرم كلي دستور selecet
select .....Top....Distinct....form....join......on...... ...where......Group By ...having.........order By
كه ترتيب منطقي ارزيابي يك select به صورت زير است(Logical order)

1- from ....join
2- on
3- where
4- Group By
5- having
6- select
7-Distinct
8-order By
9-Top
توجه : مي توان حاصل يه select را در يك select ديگر و در يك دستور استفاده كرد يعني حاصل يك select ميشه ديتابيس select ديگه .! جالبه نه .... دنيايي كار ميشه با چند خط كد ساده نوشت .ديگه احتياجي به كلي كد نويسي نيست .حتي ميشه چيزي شبيه pivot table راخودتون درست كنيد . اين چيزي بود كه در چند تاپيك قبلي سوال كرده بودم . و با آشنايي SQL در اكسل ميشه pivot table را درست كرد .
مي بايست دستور را به اين ترتيب ارزيابي كنيم كه مي تواند بعضي از قسمتها استفاده نشود .
يك ديتابيس با فيلد هاي id-name-famli-phone-fax-group1-group2 -mablaghايجاد كنيد
نام ديتابيس: data
تمام فيلد هايي كه id=3 را نشان ميدهد كه قاعدتا" بايد يك ركورد را نشان بدهد .
trSQL = "SELECT * FROM [data$] WHERE id=3"

تمام ركورد هاي فيلد هاي id,name, famli,phone ,tel,fax را نشان ميدهد .
strSQL = "SELECT id,name, famli,phone ,tel,fax FROM [data$]"

مجموع mablagh را در هر گروه مي دهد . توجه : حتما" فيلدي كه در group by مي آوريم را بايد به عنوان يك فيلد در select ذكر كنيم.
strSQL = "SELECT group1,sum (mablagh) from [data$] group by group1

جالبه نه ....!!!!!

حالا يه چيز قشنگ تر .....

strSQL = "SELECT id,name, famli from ( SELECT * FROM [data$] WHERE name=ali(
)
اين اول select داخلي را اجرا مي كند بعد حاصل را كه تمام ركوردهاي ديتابيس با شرط name=ali را به عنوان ديتابيس جديد در نظر مي گيرد و select بيروني را روي اون ديتابيس جديد اعمال مي كند .


موفق باشيد.