ورود

View Full Version : حرفه ای: راهنمایی در خصوص ارتباط دو جدول



fahimi
دوشنبه 04 آبان 1388, 10:19 صبح
llمن میخواهم قبل از اینکه بین دو جدول ارتباط بر قرار کنم با دستور select , where جدول را محدود کم و سپس با leftt join دو جدول ارتباط آن را برقرار کنم ولی اصل ماجرا این است که من دو جدول دارم یک جدول مشخصات عمومی کارکنان مانند کد و نام و مبلغ حقوق ثابت ماهیانه و جدول دوم پرداخت حقوق ماهیانه کارکنان می خواهم با استفاده از کوئری ارتباطی 1-لیست کامل کارکنان جدول یک نمایش داده شود 2-روی یک ماه خاص محدود شود جمع پرداخت نمایش داده شود ولی وقتی فیلتر میشود تنها کسانیکه دریافتی داشتن نشان داده میشود
query1.SQL.Add('select karmand.Code,hogh.sh_sabt,hogh.date_sabt,hogh.code _personl,hogh.type,hogh.mah,karmand.Last_name,karm and.mablgh, SUM(hogh.mablgh) AS mablgh');
query1.SQL.Add('FROM karmand left OUTER JOIN hogh ON (karmand.Code = hogh.code_personl) GROUP BY karmand.Code');
query1.SQL.Add('HAVING hogh.mah=''مهر'' ');

حسین شهریاری
دوشنبه 04 آبان 1388, 10:53 صبح
سلام دوست عزیز

تا اندازه ای که من تجربه دارم شما مجاز نیستید در زمانی که از توابع جمعی استفاده میکنید
همزمان با جدول دیگه JOIN برقرار کنید.چون خودم هم توی یه سیستم انبار با این مشکل
روبرو بودم.
و اما راه حلی که بنده پیشنهاد میکنم این که اول اول طرف چپ رابطه یعنی همون طرفی که با تابع
جمعی SUM سر و کار داره را جداگونه یه کوئری کن(که البته باید با GROUP BYهمراه باشه) سپس
این کوئری را تبدیل به یه VIEW کنید و در آخر این VIEW را مثل یه جدول معمولی با طرف دوم Join کنید

موفق باشید

hadisalahi2
دوشنبه 04 آبان 1388, 17:22 عصر
پیشنهاد:
از دستورات SElect تودرتو استفاده کن
مزایا:
سادگی پیاده سازی
قابل فهم بودن کد
خطایابی راحتر
یا حق

MohsenTi
دوشنبه 04 آبان 1388, 18:56 عصر
یه هست که خیلی خوبه اونم اینکه اول کوئری رو تو اکسس یا SQL بسازی بعد براساس کدی که برات تولید می کنه بسازش
راه دوم یاد گرفتن کامل دستورات SQL و به قول دوستمون Select های تو در تو

fahimi
سه شنبه 05 آبان 1388, 16:18 عصر
سلام دوست عزیز

تا اندازه ای که من تجربه دارم شما مجاز نیستید در زمانی که از توابع جمعی استفاده میکنید
همزمان با جدول دیگه JOIN برقرار کنید.چون خودم هم توی یه سیستم انبار با این مشکل
روبرو بودم.
و اما راه حلی که بنده پیشنهاد میکنم این که اول اول طرف چپ رابطه یعنی همون طرفی که با تابع
جمعی SUM سر و کار داره را جداگونه یه کوئری کن(که البته باید با GROUP BYهمراه باشه) سپس
این کوئری را تبدیل به یه VIEW کنید و در آخر این VIEW را مثل یه جدول معمولی با طرف دوم Join کنید

موفق باشید
با تشکر از جواب شما در این یک مثال کوچک را بنویسید

حسین شهریاری
شنبه 09 آبان 1388, 10:56 صبح
سلام
فایل ضمیمه است