PDA

View Full Version : کوئری جمع مبالغ واریزشده برای چند سری بارنامه



sh
چهارشنبه 30 خرداد 1386, 03:19 صبح
با سلام خدمت دوستان

برای نوشتن یک کوئری هر راهی میرم به نتیجه نمیرسم . مشکل رو می نویسم تا شما راهنمائی کنید

سه جدول داریم به نامهای Waybill,WaybillList,AccountList

در جدول Waybill اطلاعات کلی یک بارنامه درج میشه و دارای یک فیلد با کلید اصلی به نام ID هست

جدول Waybilllist حاوی سریال بارنامه (از سریال فلان تا فلان و تعداد X)
جدول Accountlist حاوی مبلغ واریز شده به یک حساب میباشد

دو جدول آخری هر دو با این فیلدها با هم در ارتباط هستند waybill.ID <> WaybillList.waybillID و یا Waybill.ID <> Accounylist.WaybillID

حالا ما میخواهیم نتیجه زیر رو داشته باشیم

نام شرکت - تعداد بارنامه دریافت شده- مبلغ واریز شده- شماره فیش

روش کار به اینصورت هست که اول در جدول Waybill اطلاعات اصلی ذخیره میشه
بعد در دو جدول Waybilllist سریال های برنامه که میتونه چند رکورد باشه و در جدول AccountList مبالغ واریزی برای اون سریالهای بارنامه ذخیره میشه . ممکنه سریالهای بارنامه ذخیره بشه ولی برای اون مبلغی به حساب واریز نشه

برای درک بهتر دیتابیس رو آپلود کردم

http://www.divshare.com/download/1007057-da6

sh
چهارشنبه 30 خرداد 1386, 03:20 صبح
یه کوئری دیگه ای هم که نیازه اینه که چطور میشه سریال بارنامه هائی رو پیدا کرد که بابت اونها پولی واریز نشده

ممنون

Kamyar.Kimiyabeigi
چهارشنبه 30 خرداد 1386, 09:09 صبح
با سلام خدمت دوستان

برای نوشتن یک کوئری هر راهی میرم به نتیجه نمیرسم . مشکل رو می نویسم تا شما راهنمائی کنید

سه جدول داریم به نامهای Waybill,WaybillList,AccountList

در جدول Waybill اطلاعات کلی یک بارنامه درج میشه و دارای یک فیلد با کلید اصلی به نام ID هست

جدول Waybilllist حاوی سریال بارنامه (از سریال فلان تا فلان و تعداد X)
جدول Accountlist حاوی مبلغ واریز شده به یک حساب میباشد

دو جدول آخری هر دو با این فیلدها با هم در ارتباط هستند waybill.ID <> WaybillList.waybillID و یا Waybill.ID <> Accounylist.WaybillID

حالا ما میخواهیم نتیجه زیر رو داشته باشیم

نام شرکت - تعداد بارنامه دریافت شده- مبلغ واریز شده- شماره فیش

روش کار به اینصورت هست که اول در جدول Waybill اطلاعات اصلی ذخیره میشه
بعد در دو جدول Waybilllist سریال های برنامه که میتونه چند رکورد باشه و در جدول AccountList مبالغ واریزی برای اون سریالهای بارنامه ذخیره میشه . ممکنه سریالهای بارنامه ذخیره بشه ولی برای اون مبلغی به حساب واریز نشه

برای درک بهتر دیتابیس رو آپلود کردم

http://www.divshare.com/download/1007057-da6

من کد زیر رو براتون نوشتم حالا اینکه دقیقا" چه فیلدهایی رو نیاز دارین خودتون زحمت بکشین بنویسید چون من نمیدونستم چه فیلدهایی نیاز هست؟



SELECT C.companyname, AL.billnumber, AL.price
FROM dbo.waybill W
inner join dbo.company C ON C.companycode = W.companycode
inner join dbo.waybilllist WL ON W.ID = WL.waybillID
inner join dbo.accountlist AL ON W.ID = AL.waybillID


اینم یک Query برای جمع مبلغ


SELECT C.companyname, AL.billnumber, SUM(AL.price) AS 'Prices'
FROM dbo.waybill W
inner join dbo.company C ON C.companycode = W.companycode
inner join dbo.waybilllist WL ON W.ID = WL.waybillID
inner join dbo.accountlist AL ON W.ID = AL.waybillID
GROUP BY C.companyname, AL.billnumber

Kamyar.Kimiyabeigi
چهارشنبه 30 خرداد 1386, 09:11 صبح
یه کوئری دیگه ای هم که نیازه اینه که چطور میشه سریال بارنامه هائی رو پیدا کرد که بابت اونها پولی واریز نشده

ممنون

این کد رو هم براتون نوشتم ولی نمیدونستم که پول فیلد Price هست یا Cost ؟


SELECT C.companyname, AL.billnumber, AL.price
FROM dbo.waybill W
inner join dbo.company C ON C.companycode = W.companycode
inner join dbo.waybilllist WL ON W.ID = WL.waybillID
inner join dbo.accountlist AL ON W.ID = AL.waybillID
WHERE AL.price IS NULL

sh
چهارشنبه 30 خرداد 1386, 22:07 عصر
سلام
آقا ممنون من اینها رو امشب تست میکنم و نتیجه رو میگم


روال کار به اینصورت هست که اول جدول WayBill پر میشه مقدار فیلد ID این جدول در جدول WayBillList و در فیلد WayBillID قرار میگیره و بدین ترتیب سریالها ثبت میشه و اگر قرار باشه وجهی هم به حساب ریخته بشه همان مقدار فیلد ID جدول اول دوباره در WaybillID جدول AccountList ثبت میشه

منظور از مبلغ price هست

sh
پنج شنبه 31 خرداد 1386, 18:07 عصر
]سلام

متاسفانه کوئری درست جواب نداد

من اینبار بانک اطلاعاتی پر شده رو آپلود میکنم حجمش کمه 170 کیلوبایته اگر ممکنه یه راهنمائی کنید

http://www.divshare.com/download/1027422-089


عکس :

http://aycu12.webshots.com/image/20571/2003508115352418261_rs.jpg (http://allyoucanupload.webshots.com/v/2003508115352418261)[/IMG]
همونطور که در عکس پیداست شرکت اول برای 5 سری بارنامه ای که گرفته یه فیش ریخته به مبلغ 125000 ریال که کوئری ما باید اینطور خروجی بده

شرکت .. تعداد 2500 بارنامه فیش 1111 مبلغ 125000


و یکه کوئری دیگری که نیاز اینه که اگر شرکتی وجهی به حساب نریخته خروجی بدین صورت باشه

شرکت ... تعداد 2500 برگ فیش 1111 مبلغ 0

ممنون

AminSobati
پنج شنبه 31 خرداد 1386, 23:44 عصر
به نظر میرسه روی Query اول که آقای کیمیابیگی نوشتن شما به SUM و COUNT و همچنین GROUP BY روی CompanyName نیاز دارین. آزمایش کردین؟

Kamyar.Kimiyabeigi
شنبه 02 تیر 1386, 13:09 عصر
دوست عزیز اینم یک Query دیگه فکر کنم درست باشه


SELECT C.companyname, AL.Cost, W.sdate, W.tarikh, WL.waybillseri
FROM dbo.waybill W
inner join dbo.company C ON C.companycode = W.companycode
inner join dbo.waybilllist WL ON W.ID = WL.waybillID
inner join dbo.accountlist AL ON W.ID = AL.waybillID

sh
شنبه 02 تیر 1386, 15:29 عصر
از توجه شما ممنون

با یک کوئری ساده و گروب بای بر اساس تاریخ واریز و شماره فیش درستش کردم