PDA

View Full Version : سوال: ادغام سه تیبل در یک تیبل یا یک کیوری



rashidianc
چهارشنبه 08 شهریور 1391, 11:09 صبح
با سلام خدمت اساتید محترم
من سه تا تیبل متفاوت دارم به شکل زیر :

جدول 1 : کد, نام کالا
جدول 2 : کد, نام کالا,مقدار وارده
جدول 3 : کد, نام کالا,مقدار صادره

در جدول 2 و 3 نام کالا را بصورت کمبو باکس از جدول 1 میگریم.

میخام اطلاعات این سه جدول را در یک جدول (جدول 4) یا کیوری ادغام کنم به شکل زیر :

جدول 4 : نام کالا,مقدار وارده,مقدارصادره,مانده(مقد ر وارده منهای مقدار صادره)

در ضمن در جدول 4 نام کالا تکراری نباشه و مقادیر هم باهم جمع شده و مانده بدست بیاد .



چطوری میشه اینکارو کرد؟

rashidianc
چهارشنبه 08 شهریور 1391, 12:30 عصر
کسی نیست نظری بده؟

foo0z0ool
چهارشنبه 08 شهریور 1391, 12:59 عصر
با سلام خدمت اساتید محترم
من سه تا تیبل متفاوت دارم به شکل زیر :

جدول 1 : کد, نام کالا
جدول 2 : کد, نام کالا,مقدار وارده
جدول 3 : کد, نام کالا,مقدار صادره

در جدول 2 و 3 نام کالا را بصورت کمبو باکس از جدول 1 میگریم.

میخام اطلاعات این سه جدول را در یک جدول (جدول 4) یا کیوری ادغام کنم به شکل زیر :

جدول 4 : نام کالا,مقدار وارده,مقدارصادره,مانده(مقد ر وارده منهای مقدار صادره)

در ضمن در جدول 4 نام کالا تکراری نباشه و مقادیر هم باهم جمع شده و مانده بدست بیاد .



چطوری میشه اینکارو کرد؟


واسه جمع کردن مقادیر مورد نظر خیلی راحت میتونی تویه کئوری در قسمت Criteria بنویسی
[مقدار وارده]-[مقدارصادره]=
واسه اینکه داده تکراری هم نباشه بستگی به PK خودت داره که چطوری کد داده باشی
یه جدول جدید هم بساز شامل 2 تا فیلد 1- PK و 2- مانده اینطوری مقادیر مورد نظر هم واست ذخیره میشهپ


من کد نویسی بلد نیستم و الی اون طوری رو هم بهت میگفتم

دقت کن که مقادیر وارده و صادره هم نامبر باشه

syasamboo3
چهارشنبه 08 شهریور 1391, 18:17 عصر
میتونی از دستورات sql ب راحتی استفاده کنی.
اگرم اری توی فایل اکسس کار میکنی(یعنی به عنوان پایگاه داده واسه برنامه دیگه نیست) میتونی از طریق کوئری ویزارد موقع انتخاب جدول مور نظرت جدول اول رو انتخاب کنی فیلدهاش رو انتقال بدی و بجای اینکه بری صفحه بعد یه جدول دیگه رو انتخاب و فیلدهای مورد نظرت رو انتقال بدی.به همین ترتیب همه فیلدهای مورد نظرت رو.
واسه کم کردن مقدار فیلد ها از هم میتونی از sql استفاده کنی. یه سرچی کن اگه نشد بگو تا نمونه یا کد بزارم

rashidianc
چهارشنبه 08 شهریور 1391, 22:10 عصر
با سلام و تشکر از شما syasamboo3
خیلی سرچ کردم ولی متاسفانه چیز خاصی ندیدم اگر میشود کد یا نمونه مورد نظر را بزارید . ممنون

Abbas Amiri
چهارشنبه 08 شهریور 1391, 22:40 عصر
در این گونه موارد، شما می توانید ازکوئری Union استفاده کنید

rashidianc
پنج شنبه 09 شهریور 1391, 00:15 صبح
با تشکر از شما Abbas Amiri
از Union هم استفاده کردم ولی جواب نداد!
SELECT namekala,vahed,groh,kod,groh2,had,-megsadere
FROM Query1
UNION SELECT namekala,vahed,groh,kod,groh2,had,megvarede
FROM Query2;

لطف کنید اگر میبینید اشکالی داره بفرمایید یا دستورش را اصلاح کنید لطفن .
با تشکر

rashidianc
پنج شنبه 09 شهریور 1391, 10:36 صبح
از اساتیدی که میتونن به بنده کمک کنند خواهش میکنم کوئری Union زیر را برام بنویسند . با تشکر فراوان
من سه تا تیبل متفاوت دارم به شکل زیر :

جدول 1 : کد, نام کالا
جدول 2 : کد, نام کالا,مقدار وارده
جدول 3 : کد, نام کالا,مقدار صادره

در جدول 2 و 3 نام کالا را بصورت کمبو باکس از جدول 1 میگریم.

میخام اطلاعات این سه جدول را در یک جدول (جدول 4) یا کیوری ادغام کنم به شکل زیر :

جدول 4 : نام کالا,مقدار وارده,مقدارصادره,مانده(مقد ر وارده منهای مقدار صادره)

در ضمن در جدول 4 نام کالا تکراری نباشه و مقادیر هم باهم جمع شده و مانده بدست بیاد .

Abbas Amiri
پنج شنبه 09 شهریور 1391, 16:25 عصر
اگر دستور فوق مشکل خاصی نداشته باشد بصورت زیر آنرا تغییر دهید


SELECT namekala,vahed,groh,kod,groh2,had,0 AS megvarede, megsadere
FROM Query1
UNION SELECT namekala,vahed,groh,kod,groh2,had,megvarede, 0 AS megsadere
FROM Query2;



از کوئری فوق جهت ایجاد گزارش ریز عملکرد کالاهای مختلف و همچنین با گروه بندی در گزارشات میتوانید به مجموع آنها دست پیداکنید.

rashidianc
شنبه 11 شهریور 1391, 08:12 صبح
ممنون و متشکر حل شد

syasamboo3
یک شنبه 12 شهریور 1391, 09:38 صبح
سلام.
دوست عزیز میتونی از ایر روش هم استفاده کنی.
فیلم گرفتم میتونی ببینی

فیلم (http://trainbit.com/files/9269149884/barnamenevis.rar)
فایل نمونه (http://trainbit.com/files/3269149884/test.accdbhttp://)

rashidianc
یک شنبه 12 شهریور 1391, 12:39 عصر
واقعن کارتون درسته و ممنون از این همه لطف .:تشویق:

Abbas Amiri
یک شنبه 12 شهریور 1391, 18:45 عصر
فیلم آموزشی شما خیلی قشنگ بود . اما دوست عزیز اگر چند رکورد دیگه به ورود وخروج ها اضافه میکردید متوجه مشکل راه ساده ای که ارائه کردید میشدید.

syasamboo3
دوشنبه 13 شهریور 1391, 00:03 صبح
متاسفانه پاک کردم فایل رو.اگر لطف کنید و اشکالش رو بگید ممنون میشم.بدونم کجای کارم ایراد داشته

Abbas Amiri
دوشنبه 13 شهریور 1391, 20:53 عصر
اشکالش رو بگید ممنون میشم.بدونم کجای کارم ایراد داشته
سلام
هرکوئری برای مصارف خاص خودش کاربرد دارد زمانی که شما جداولی را به هم Join میکنید ، رکوردهایی را بشما میدهد که فیلدهای مشترک آنها مقادیر برابر داشته باشد . در تصویر زیر کالای a سه بار وارد وسه بارهم خارج شده است . ازاولین رکورددرجدول واردات که شروع کنیم a=4 ، در جدول صادرات سه رکورد با نام کالای a داریم بنابر این مقدار ورودی 4 سه مرتبه با مقدار ورودیهایی که درجدول صادرات است (که نام کالای a دارند) نمایش داده میشود و قس علیهذا
92303

rashidianc
شنبه 20 آبان 1391, 10:32 صبح
سلام آقای
Abbas Amiri (http://barnamenevis.org/member.php?189381-Abbas-Amiri)
امیدوارم حالتون خوب باشد . من یک مشکل دارم از این کیوری یونیون استفاده کردم ولی در نتیجه که بدست میده دو تا رکورد فراموش میشه و در یونیون نشان نمیده آیا اشکال از دستور یونیون است یا چیز دیگر ؟
SELECT namekala,vahed,date,kod,groh,0 AS sumofmegvarede, sumofmegsadere,projhe FROM Query1 UNION SELECT namekala,vahed,date,kod,groh,sumofmegvarede, 0 AS sumofmegsadere,projhe2 FROM Query2;

Mehrdad_Parsi
شنبه 18 خرداد 1392, 17:39 عصر
از union all استفاده نمایید