PDA

View Full Version : تابع Sum در SQL



ashkan1234
چهارشنبه 05 تیر 1392, 13:26 عصر
با سلام!
دوستان یه مشکل عجیب و غریب برخوردم!
یدونه ویو دارم که متشکل از چندتا جدوله!
1-جدول تجهیزات
2- خرید(تعداد-قیمت)
3-فروش(تعداد-قیمت)
براساس جدول تجهیزات گروه بندی کردم!
حالا براساس تعداد که میخوام ببینم از مثلا دستگاه لپ تاپ اچ پی چندتا خریدم وچند تا فروختم!از Sum استفاده کردم!
حالا مثلا اگه من 2تا 2تایی (4تا)از دستگاه اچ پی خریدم:میزنه 8تا!
یا مثلا یدونه رکورد،10دستگاه از سونی خریدم میزنه 40 تا!
چرا؟؟؟؟!!
لطفا راهنمایی بفرمایید!
با تشکر

مهدی هادیان2
چهارشنبه 05 تیر 1392, 13:52 عصر
بسم الله الرحمن الرحیم
با سلام
لطفا ویویی که نوشتید رو بذارید.
موفق باشید.

ashkan1234
چهارشنبه 05 تیر 1392, 14:22 عصر
بسم الله الرحمن الرحیم
با سلام
لطفا ویویی که نوشتید رو بذارید.
موفق باشید.

خدمت شما
SELECT dbo.Tool.Id, dbo.Tool.Caption, SUM(dbo.TBL_ForoshTajhizat.FRS_Tedad) AS FRS_Tedad, SUM(dbo.TBL_EjareTajhizat.EJR_Tedad) AS EJR_Tedad,
SUM(dbo.TBL_KharidTajhizat.KHR_Tedad) AS KHR_Tedad, SUM(dbo.TBL_SaierTajhizat.SIR_Tedad) AS SIR_Tedad, SUM(dbo.TBL_HazineNet.NET_Mablagh)
AS NET_Mablagh, SUM(dbo.TBL_EjareTajhizat.EJR_Gheimat) AS EJR_Gheimat, MAX(dbo.TBL_EjareTajhizat.EJR_TarikhPayan) AS EJR_TarikhPayan,
SUM(dbo.TBL_EjareTajhizat.EJR_GheimatTamamShode) AS EJR_GheimatTamamShode, SUM(dbo.TBL_EjareTajhizat.EJR_MandeGhest) AS EJR_MandeGhest,
SUM(dbo.TBL_EjareTajhizat.EJR_MablaghCheck) AS EJR_MablaghCheck, SUM(dbo.TBL_EjareTajhizat.EJR_MablaghNaghd) AS EJR_MablaghNaghd,
SUM(dbo.TBL_EjareTajhizat.EJR_MablaghToHesab) AS EJR_MablaghToHesab
FROM dbo.TBL_HazineNet INNER JOIN
dbo.TBL_SaierTajhizat ON dbo.TBL_HazineNet.NET_SIR_Id = dbo.TBL_SaierTajhizat.SIR_Id RIGHT OUTER JOIN
dbo.Tool LEFT OUTER JOIN
dbo.TBL_ForoshTajhizat ON dbo.Tool.Id = dbo.TBL_ForoshTajhizat.FRS_Tool_id ON dbo.TBL_SaierTajhizat.SIR_Tool_id = dbo.Tool.Id LEFT OUTER JOIN
dbo.TBL_KharidTajhizat ON dbo.Tool.Id = dbo.TBL_KharidTajhizat.KHR_Tool_id LEFT OUTER JOIN
dbo.TBL_EjareTajhizat ON dbo.Tool.Id = dbo.TBL_EjareTajhizat.EJR_Tool_id
GROUP BY dbo.Tool.Id, dbo.Tool.Caption

مهدی هادیان2
چهارشنبه 05 تیر 1392, 15:47 عصر
بسم الله الرحمن الرحیم
با سلام
این قسمت از کدتون که از LEFT , RIGHT استفاده کردید رو نمی فهم:
RIGHT OUTER JOIN dbo.Tool LEFT OUTER JOIN
dbo.TBL_ForoshTajhizat ON dbo.Tool.Id = dbo.TBL_ForoshTajhizat.FRS_Tool_id ON dbo.TBL_SaierTajhizat.SIR_Tool_id = dbo.Tool.Id LEFT OUTER JOIN
dbo.TBL_KharidTajhizat ON dbo.Tool.Id = dbo.TBL_KharidTajhizat.KHR_Tool_id LEFT OUTER JOIN
dbo.TBL_EjareTajhizat ON dbo.Tool.Id = dbo.TBL_EjareTajhizat.EJR_Tool_id

و پیشنهاد میکنم از تابع ISNULL به شکل زیر استفاده کنید:
ISNULL(SUM(dbo.TBL_ForoshTajhizat.FRS_Tedad) AS FRS_Tedad),0)
که در صورت نال بودن 0 محاسبه کند.
موفق باشید.

ashkan1234
چهارشنبه 05 تیر 1392, 18:27 عصر
بسم الله الرحمن الرحیم
با سلام
این قسمت از کدتون که از LEFT , RIGHT استفاده کردید رو نمی فهم:
RIGHT OUTER JOIN dbo.Tool LEFT OUTER JOIN
dbo.TBL_ForoshTajhizat ON dbo.Tool.Id = dbo.TBL_ForoshTajhizat.FRS_Tool_id ON dbo.TBL_SaierTajhizat.SIR_Tool_id = dbo.Tool.Id LEFT OUTER JOIN
dbo.TBL_KharidTajhizat ON dbo.Tool.Id = dbo.TBL_KharidTajhizat.KHR_Tool_id LEFT OUTER JOIN
dbo.TBL_EjareTajhizat ON dbo.Tool.Id = dbo.TBL_EjareTajhizat.EJR_Tool_id

و پیشنهاد میکنم از تابع ISNULL به شکل زیر استفاده کنید:
ISNULL(SUM(dbo.TBL_ForoshTajhizat.FRS_Tedad) AS FRS_Tedad),0)
که در صورت نال بودن 0 محاسبه کند.
موفق باشید.

Right و Left واسه رابطه بازگشتی اطلاعات چندتا جدوله!(Outer join)
از IsNull هم استفاده کردم!جوابگو نیست!
بازهم همونجوریه!

ashkan1234
پنج شنبه 06 تیر 1392, 17:41 عصر
مشکلم همچنان باقیست!
اگر کسی کمکی از دستش برمیاد دریغ نفرمایید!
باتشکر:لبخند: