ورود

View Full Version : نوشتن یک کوئری مبتنی بر شرط



BORHAN TEC
پنج شنبه 02 شهریور 1391, 11:34 صبح
سلام
در قسمتی از پایگاه داده جداولی مانند شکل زیر داریم:
91720
توضیحات:
در برنامه ای که روی آن کار می کنم شروط زیر برقرار است:
1- به ازای هر کالا یک سفارش داریم. یعنی برخلاف بسیاری از جاها یک سفارش شامل تحویل گرفتن چند کالای مختلف نمی شود.
2- برای برخی از مشتری ها ما به ازای هیچ یا یک و یا چند کالا قیمت های خاصی را در نظر می گیریم. مثلاً اگر یک مشتری کالای شماره 1 را بیشتر سفارش می دهد ما این کالا را از این به بعد 50% ارزانتر از قیمت عمومی به او می دهیم.

مثال:
در پایگاه داده نمونه بالا می خواهیم مجموع خریدهای مشتری ای با نام Hamid را محاسبه کنیم:
- اگر به جدول Order نگاه کنیم می بینیم که جناب Hamid(که CustID آن 2 است) سه خرید را انجام داده است. (کالای A: با قیمت عمومی 100$ و کالای B: با قیمت عمومی 200% و کالای C:با قیمت عمومی 150%)
- حال اگر به جدول SpecialPrice نگاه کنید می بینید که برای کالای 2(یعنی B) و کالای 3(یعنی C) قیمت های خاصی را برای کاربر 2 (یعنی Hamid) در نظر گرفته ایم. به عبارتی دیگر مجموع کل سفارشات Hamid باید اینگونه محاسبه شود:

100$ + 120$ + 95$ = 315$

حال خواهشمندم که در نوشتن کوئری کمکم کنید. :خجالت:

با تشکر فراوان...

rahgozare_abi
پنج شنبه 02 شهریور 1391, 13:00 عصر
SELECT O.FCustID

,Sum(IsNull(SP.SpecPrice,P.PublicPrice))
FROM dbo.Order as O
Left Join dbo.SpecialPrice as SP on (O.FCustID = SP.CustID And O.ProdID = SP.FProdID)
Left Join dbo.Product as P on (O.ProdID = P.ProdID)
Group By O.FCustID