0

آموزش گام به گام SQL Server

 
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server
پنج شنبه 30 تیر 1390  11:36 AM

سلام دوباره

 

مثالی از توابع تجمعی :

 

مثال :  یک SP  جهت استفاده در خروجی مدیریتی ذیل طراحی نمائید.

           

                        واحد سازمانی                  تعداد کارکنان                    تعداد تحت تکفل

           
     
 
     
 


           

           
     
 

 


همانطور که از ظاهر جدول مشاهده می گردد به دو روش گزارش مذکور قابل وصول است.

 

روش اول :  جدول اصلی جدول Unit  و جداول ارتباطی Child , Person  خواهند بود بنابراین خواهیم داشت :

Create  Proc MIS1 AS

Select  UnitName ,

(Select  Count (*)  From  Person  Where  UnitID = U.UnitID )As PCnt ,

(Select  Count (*)  From  Child  Where

(Select UnitID From Person Where PrsID=Child.PrsID)=U.UnitID)As TCnt,

From  Unit  As  U

Order  By  UnitName

روش دوم :  جدول اصلیPerson  و جدول ارتباطیChild ,Unit خواهند بود بنابراین خواهیم داشت:

 

Create  Proc  MIS2 AS

Select  (Select  UnitName Form Unit Where UnitID = P1.UnitID)As UnitName,

Count (*) As PCnt,

(Select Count(*) From Child Where (Select UnitID From Person P2 Where PrsID

= Child.PrsID ) = P1.UnitID ) As  TCnt

From  Person P1

Group  By  UnitID

Order  By  1

 

مسئله :  اختلاف اطلاعات نمایش داده شده در دو روش اول و دوم را تشریح نمائید.

 

مثال : یکSP  طراحی کنید که فهرست کارکنانی را که بین 3 تا 6  تحت تکفل دارند را استخراج نماید.

 

به منظور سهولت در طراحی جدول Person  را بعنوان جدول اصلی در نظر می گیریم بنابراین خواهیم داشت :

 

Create  Proc  MySP1 AS

Select  P.*,

(Select  Count(*) From Child  C  Where PrsID = P.PrsID )As  Cnt

From  Person  As P

Where  (Select  Count (*) From Child Where  PrsID= P.PrsID)   BetWeen 3 and 6

Order  By  PrsID

 

ادامه مثالها در پست بعدی ...

منتظر ما باشید

مو فق باشید

تشکرات از این پست
دسترسی سریع به انجمن ها