PDA

View Full Version : گزارش گیری از کل اقلامی که به فروش رسیده و همچنین از کل اقلامی که خریداری شده است



kamran_14
دوشنبه 05 مرداد 1394, 21:08 عصر
با سلام
سوال من در مورد گزارش گیری از تعداد کل اقلام موجود در فاکتور فروش و فاکتور خرید است
من 2 تا فاکتور دارم که یکی شامل اقلام خرید و دیگری شامل اقلام فروش است
من میخوام تعداد کل فروش هر کالا و همچنین تعداد کل خرید هر کالا را محاسبه کنم
به جای نام کالا در هر 2 فاکتور، بارکد کالا ذخیره شده
و فیلد بارکد در هر دو جدول کلید خارجی است فیلد بارکد در جدول کالا کلید اصلی است و هر کالا با بارکد منحصر به فرد ذخیره شده است
من هر سه جدول را در عکس زیر گذاشتم ولی فقط از 2 جدول اقلام فاکتور فروش و خرید استفاده کردم و از جدول کالا استفاده نکردم
من این کوئری را نوشتم ولی تعداد کل اقلام فروش و همچنین تعداد کل اقلام خرید هر بارکد را درست جواب نمیده
مثل اینکه بعضی از فیلدها هنگام join تکرار میشه و بنابراین مجموع اشتباه میآد مجموع مثلا 3 یا 2 برابر میده
شاید به خاطر این است که در مقابل inner join شرط بر روی 2 فیلد که نوعشان کلید خارجی است، هست

select tblAglamefactoreForush.barcode,sum(tblAglamefactor eForush.tedad) as tedadForush,SUM(tblAglamefactoreKharid.tedad) as tedadKharid
from tblAglamefactoreForush
inner join tblAglamefactoreKharid on tblAglamefactoreKharid.barcode=tblAglamefactoreFor ush.barcode
group by tblAglamefactoreForush.barcode

tooraj_azizi_1035
سه شنبه 06 مرداد 1394, 09:31 صبح
سلام

select t1.barcode, sum(t2.tedad) tedadForush , sum(t3.tedad) tedadKharid from
tblkala t1 join tblAglamefactoreForush t2 on t1.barcode=t2.barcode
join tblAglamefactoreKharid t3 on t1.barcode=t3.barcode
group by t1.barcode

kamran_14
سه شنبه 06 مرداد 1394, 11:14 صبح
select t1.barcode, sum(t2.tedad) tedadForush , sum(t3.tedad) tedadKharid from
tblkala t1 join tblAglamefactoreForush t2 on t1.barcode=t2.barcode
join tblAglamefactoreKharid t3 on t1.barcode=t3.barcode
group by t1.barcode



ممنون از جوابتون
می شه کدتون رو توضیح بدید؟ آیا همیشه در ارتباط چند به چند به جای inner join از join استفاده میشه؟
مشکل اینکه بعضی از مقادیر در رکورد بعدی تکرار میشد چی بود؟ آیا به خاطر این بود که از جدول واسط که کلید اصلی در آنجا بود استفاده نکرده بودم؟
باز ممنون

tooraj_azizi_1035
سه شنبه 06 مرداد 1394, 12:31 عصر
من جدول tblkala رو يكبار با خريد و يك بار با فروش join كردم يعني در اين كد ارتباطي بين خريد و فروش نيست و tblkala جدولي است كه با بقيه join ميشه.
شما خريد رو با فروش join كرديد. باركد 1000 2 بار در خريد آمده و 2 بار در فروش كه حاصل join اونها 4 رديف ميشه.
شما بايد با كاري كه join انجام ميده آشنا بشيد اين عملگر اشتراك رو برمي گردونه و شما با join تون اشتراك خريد و فروش رو خواستين كه اين اصلاً چيزي كه شما مي خواين نيست. شما بايد با توجه به چيزي كه مي خواين كوئري تون رو بنويسين مرحله به مرحله.

kamran_14
سه شنبه 06 مرداد 1394, 16:44 عصر
من جدول tblkala رو يكبار با خريد و يك بار با فروش join كردم يعني در اين كد ارتباطي بين خريد و فروش نيست و tblkala جدولي است كه با بقيه join ميشه.
شما خريد رو با فروش join كرديد. باركد 1000 2 بار در خريد آمده و 2 بار در فروش كه حاصل join اونها 4 رديف ميشه.
شما بايد با كاري كه join انجام ميده آشنا بشيد اين عملگر اشتراك رو برمي گردونه و شما با join تون اشتراك خريد و فروش رو خواستين كه اين اصلاً چيزي كه شما مي خواين نيست. شما بايد با توجه به چيزي كه مي خواين كوئري تون رو بنويسين مرحله به مرحله.

من کد شما را امتحان نکرده بودم ولی نتیجه با کدی که من براتون گذاشتم نداشت
با اشتراک ها رو میآره

kamran_14
سه شنبه 06 مرداد 1394, 17:47 عصر
خواهش می کنم کمکم کنید
این کد:

select t1.barcode, sum(t2.tedad) tedadForush , sum(t3.tedad) tedadKharid from
tblkala t1 join tblAglamefactoreForush t2 on t1.barcode=t2.barcode
join tblAglamefactoreKharid t3 on t1.barcode=t3.barcode
group by t1.barcode




با این کد هیچ فرقی نداره نتیجه با هم برابره

-- موجودی انبار را برای هر کالا نمایش دهد
select tblkala.barcode,sum(tblAglamefactoreForush.tedad) as tedadForush,SUM(tblAglamefactoreKharid.tedad) as tedadKharid
from tblkala
inner join tblAglamefactoreForush on tblkala.barcode=tblAglamefactoreForush.barcode --and tblAglamefactoreKharid.tedad=tblAglamefactoreForus h.tedad
inner join tblAglamefactoreKharid on tblkala.barcode=tblAglamefactoreKharid.barcode
group by tblkala.barcode

اگه من از روی جدول کالا به 2 تا جدول فروش نگاه کنم و حاصل جمع رو پیدا کنم مشکل حل می شه ولی همیشه از جدول فروش یا خرید به جدول کالا نگاه می کنه و جوین میکنه این باعث میشه چون هم در جدول خرید و هم در جدول فروش بارکد تکراری داریم بعضی رکوردها با فیلدهای تکراری ظاهر بشن
ممنون

tooraj_azizi_1035
چهارشنبه 07 مرداد 1394, 12:24 عصر
شما طبق تصوير بالا خروجي دلخواه رو قرار بدين.