پاسخ به:آموزش گام به گام 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
ادامه مثالها در پست بعدی ...
منتظر ما باشید
مو فق باشید