ورود

View Full Version : سوال: مشکل کوئری join



RezaS_1354
سه شنبه 29 تیر 1395, 19:27 عصر
سلام خدمت دوستان
من دوتا جدول دارم یکی از ثبت کالا و یکی هم خرید کالا . در جدول خرید کالا هنگام ثبت یک دوره زمانی انتخاب میشه مثلا سال 95 که در طول دوره های زمانی مختلف مرتبا کالاها تکرار میشود . و کاربر فقط ان دوره زمانی را که تعیین کرده میتواند کالاهای ثبت شده ان دوره را ببیند که در حالت عادی ممکن است یک کالا چندین بار تکرار شده باشد مثلا کالای شماره 100 یکبار در سال 93 . یکبار 94 و سه بار در سال 95 و الی اخر ...
حالا من در یک جدول جداگانه در یک grid این دو جدول بالا را با هم left join میکنم همه چیز درست میشه و کل کالاها رو نشون میده و کالاهای متناظرش رو هم در جدول خرید نشون میده ولی فقط یک مشکل وجود داره اونم اینه که نمیاد دوره زمانی رو تفکیک کنه و یک کالایی رو مثلا با کد 100 که در سه سال جمعا 5 بار خریداری شده همه رو نشون میده . و وقتی میام از WHERE استفاده میکنم که فقط مثلا خرید سال 95 را نشون بده متاسفانه جدول نتیجه ، میاد فقط کالاهایی که در سال 95 خریداری شده رو نشون میده و انگار نه انگار JOIN صورت گرفته و تعداد رکوردها میشه اندازه تعداد رکوردها جدول خرید و این اشتباهه . چون بیس و جدول پایه که همه کالاها رو داره جدول کالاست نه جدول خرید
حالا سوالم از دوستان گرامی اینه که ایا میشود هم کل کالا ها رو از جدول کالا داشت و هم کالاهای خریداری شده از جدول خرید و اونم فقط در سال 95 بدون اینکه رکوردها تعدادشون از تعداد جدول کالا کمتر شه ؟؟؟
با تشکر

vbhamed
جمعه 01 مرداد 1395, 00:17 صبح
سلام
بهتره شکل چند جدول نمونه با اطلاعات فرضی رو در Word رسم کنید و شکل خروجی دلخواه رو هم بزارید تا بهتر بشه متوجه درخواستتون شد و خودتونم بهتر متوجه بشید

RezaS_1354
شنبه 02 مرداد 1395, 00:35 صبح
سلام خدمت استاد حامد
ممنون از لطفت . من بصورت مختصر در یک تصویر خواستمو طراحی کردم انشالله که مفهوم قضیه مشخص باشه .
بازهم تشکر

RezaS_1354
یک شنبه 03 مرداد 1395, 17:20 عصر
سلام استاد حامد
من شک نداشتم که این سوال راه حلی نداره البته یه کوئری نوشتم که درست شده فقط مشکلش تو جستجوشه وقتی کد کالایی جستجو میشه عکس العملی نشن نمیده یا دقیق جستجو نمیشه
بهرحال اگه چیز بهتری به نظرتون رسید ممنون میشم کل برنامم لنگ این یه تیکه کد
با تشکر

vbhamed
سه شنبه 05 مرداد 1395, 03:19 صبح
سلام

راه حل نداره که درست نیست ولی نه اینکه حتما با یک کوئری به نتیجه دلخواهتون برسید، گاهی لازمه در چند مرحله یک گزارش ایجاد بشه

برای اینکار شما می‌تونید فیلد مقدار خرید و مبلغ خرید رو در جدول تعریف کالاها قرار بدید و در ابتدای گزارشگیری مقدار این فیلدها در همه رکوردهای جدول کالا رو 0 کنید، سپس با یک حلقه برای هر کالا جداگانه تعداد و مبلغ خرید یا فروشش رو حساب کنید و در فیلدهای همون کالا یادداشت کنید و در نهایت جدول کالا رو به همراه این دو فیلد نمایش بدید

البته به جای جدول کالا می‌تونید از یک جدول جداگانه دیگه هم استفاده کنید و ضمنا در هر دو حالت اگر به فیلدهای دیگه نظیر دوره مالی هم نیاز دارید اونها رو هم بزارید