PDA

View Full Version : کوئری برای ادغام دو جدول



mohsenvaezy
پنج شنبه 02 اردیبهشت 1395, 13:55 عصر
کوئری محاسبه حقوق و دستمزد


با سلام دوستان من دو تا جدول دارم که میخام باهم ادغام کنم
1-جدول ورود و خروج افراد که شامل فیلد های کد پرسنلی،تاریخ ، زمان ورود و خروج و حقوق هر تایم ورود و خروج هستش ، برای هر فرد در هر روز امکان داره چند رکورد ورود و خروج ثبت شده باشه
2-جدول روزهای سال که شامل فیلد تاریخ روز و تعطیل هست که فیلد تعطیل از نوع boolean

حالا میخوام حقوق ساعات ورود و خروج که در جدول یک ذخیره شده برای هر شخص در هر روز جمع زده بشه و با جدول دوم ادغام بشه که روزهای تعطیل قابل مشاهده باشند برای محاسبه حقوق ماهیانه


140086

reza_ali202000
پنج شنبه 02 اردیبهشت 1395, 19:34 عصر
سلام دوست عزیز
نمیدونم من بد متوجه شدم یا خروجیتون مشکل داره. توی جدول اول کد پرسنلی 123 تو تا ورود خروج توی یه روز داره ولی توی جدول خروجی اولین ورود خروج کد 123 حساب شده.
آیا اولین ورود خروج هر کد مهم هست؟ آیا جدول خروجیتون بر اساس تعداد ساعت کار میکنه؟ مثلا کد 123 ساعت:2+3=5 ساعت کارکرد داشته؟ و چند تا سوال دیگه؟
لطفا اینا رو پاسخ بدید تا اونجا که بشه کمکتون کرد.

mohsenvaezy
پنج شنبه 02 اردیبهشت 1395, 20:11 عصر
عکس جدیدو ببین شاید بهتر متوجه بشی تو خروجی رکورد اول و دوم مربوط به کاربر 123 حقوقش باهم جمع شده

reza_ali202000
جمعه 03 اردیبهشت 1395, 17:51 عصر
سلام دوست عزیز
امیدوارم بدردتون بخوره
select table_1.id,table_1.date, tatil,SUM(CONVERT(int, fee)) as fee
from table_1,table_2
where table_1.date=table_2.date
group by table_1.date,table_1.id,tatil

mohsenvaezy
جمعه 03 اردیبهشت 1395, 18:22 عصر
سلام دوست عزیز
امیدوارم بدردتون بخوره
select table_1.id,table_1.date, tatil,SUM(CONVERT(int, fee)) as fee
from table_1,table_2
where table_1.date=table_2.date
group by table_1.date,table_1.id,tatil


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

reza_ali202000
جمعه 03 اردیبهشت 1395, 19:56 عصر
سلام دوست عزیز
یه خورده باهاش ور میرفتین درست میشد.:بوس:
SELECT Tbl_Enter_E.Tbl_Enter_E.[E-ID] AS Expr1, Tbl_Enter_E.[E-Date], Tbl_tatilat.[T-tatil], Sum(Tbl_Enter_E.[E-salary]) AS Expr2
FROM Tbl_tatilat, Tbl_Enter_E
WHERE (((Tbl_Enter_E.[E-Date])=[Tbl_tatilat].[T-Date]))
GROUP BY Tbl_Enter_E.Tbl_Enter_E.[E-ID], Tbl_Enter_E.[E-Date], Tbl_tatilat.[T-tatil];

mohsenvaezy
شنبه 04 اردیبهشت 1395, 04:02 صبح
سلام دوست عزیز
یه خورده باهاش ور میرفتین درست میشد.:بوس:
SELECT Tbl_Enter_E.Tbl_Enter_E.[E-ID] AS Expr1, Tbl_Enter_E.[E-Date], Tbl_tatilat.[T-tatil], Sum(Tbl_Enter_E.[E-salary]) AS Expr2
FROM Tbl_tatilat, Tbl_Enter_E
WHERE (((Tbl_Enter_E.[E-Date])=[Tbl_tatilat].[T-Date]))
GROUP BY Tbl_Enter_E.Tbl_Enter_E.[E-ID], Tbl_Enter_E.[E-Date], Tbl_tatilat.[T-tatil];

سلام خسته نباشی دوست عزیز مشکلم حل شد داشتم چقد مسئله رو پیچیدش می کردم خیلی ساده حلش کردی واقعا دستت درد نکنه:تشویق::تشویق:

mohsenvaezy
شنبه 04 اردیبهشت 1395, 04:15 صبح
سلام دوست عزیز
یه خورده باهاش ور میرفتین درست میشد.:بوس:
SELECT Tbl_Enter_E.Tbl_Enter_E.[E-ID] AS Expr1, Tbl_Enter_E.[E-Date], Tbl_tatilat.[T-tatil], Sum(Tbl_Enter_E.[E-salary]) AS Expr2
FROM Tbl_tatilat, Tbl_Enter_E
WHERE (((Tbl_Enter_E.[E-Date])=[Tbl_tatilat].[T-Date]))
GROUP BY Tbl_Enter_E.Tbl_Enter_E.[E-ID], Tbl_Enter_E.[E-Date], Tbl_tatilat.[T-tatil];
ولی یه چیزی رو هنوز متوجه نشدم با این کد ساده چطور جداگانه برای هر کدوم از پرسنل هر روز رو جدا حقوقشو جمع میزنه ؟ در واقع اینکه برای هر کدوم از پرسنل جدا حساب بشه کجا تعیین شده

reza_ali202000
یک شنبه 05 اردیبهشت 1395, 14:22 عصر
سلام
دستور گروپ میاد گروه بندی میکنه بر اساس اولین فیلد روبروییش. بعد از اون همون گروه هایی رو که تشکیل داده میاد بر اساس فیلد دوم گروه بندی میکنه.
بعد از اون دستوری که جلوی سلکت نوشته شده رو برا گروه های مرحله اخر اعمال میکنه.

mohsenvaezy
دوشنبه 06 اردیبهشت 1395, 17:57 عصر
سلام
دستور گروپ میاد گروه بندی میکنه بر اساس اولین فیلد روبروییش. بعد از اون همون گروه هایی رو که تشکیل داده میاد بر اساس فیلد دوم گروه بندی میکنه.
بعد از اون دستوری که جلوی سلکت نوشته شده رو برا گروه های مرحله اخر اعمال میکنه.
خیلی ممنون از پاسخ های کاملتون
اگه ممکنه یه ادیتور خوب برا نوشتن دستورات sql معرفی کن این دستورو من خواستم تو vba استفاده کنم جواب نداد syntax این دستور تو vba به چه صورته؟