ورود

View Full Version : نوشتن کوئری از جدول کارکنان و سوابق آنها



soha_smb
دوشنبه 09 اردیبهشت 1392, 22:10 عصر
با سلام
من دارم به برنامه تحت وب می نویسم که اطلاعات پرسنلی رو جمع می کنه و از اون گزارش می گیرم
جدول هام به این شکله

103507

روال به این شکله که کاربر میاد مشخصات یه پرسنل رو برای بار اول تو tbl_personel ثبت می کنه و همزمان هم تو Tbl_Record سوابق یه نفر ثبت می شه.بعد ممکنه در طول خدمت پرسنل جابجا بشن که تو جدول Tbl_Record ثبت می شه . یه نفر ممکنه در طول سال بین نمایندگی ها/شعب جابجا بشه

حالا می خوام گزارش بگیرم که یکم به مشکل برخوردم
1- من چطوری مشخص کنم که تو یک شعبه خاص چه کارکنانی در حال حاضر هستند.
2- با یه پست خاص چه کسانی در شعب هستند.
3-با یه پست خاص چه کسانی در کل سازمان هستند.
اگه دوستان راهنمایی کنن ممنون میشم.
در ضمن اگه جدول ها نیاز به تغییر داره بگین کجاش باید تغییر کنه ،در مرحله ای هستم که بتونم جداول رو تغییر بدم.
اینم نمونه ای از جدول Tbl_Record که پر شده

103486

مهدی هادیان2
سه شنبه 10 اردیبهشت 1392, 08:08 صبح
بسم الله الرحمن الرحیم
با سلام
متوجه نشدم که فیلد BranchUnit_IDEnd برای چیه؟ مگه تنها مهم نیست که در حال حاضر کارمند مورد نظر در کدوم شعبه فعالیت میکنه؟ فکر نمی کنم نیازی به این فیلد داشته باشید. مگر اینکه چیز خاصی مد نظرتون باشه.
فکر میکنم اگه نام جدول رو از Tbl_Record به استخدام یا قرارداد تغییر بدید؛ بهتر باشه.

من چطوری مشخص کنم که تو یک شعبه خاص چه کارکنانی در حال حاضر هستند.
SELECT Personal_id
From Tbl_Record
WHERE Branch_Id=ID

با یه پست خاص چه کسانی در شعب هستند.
SELECT *
FROM Tbl_Record
INNER JOIN Post
ON Post.id=Tbl_Record.PostId
And Post.Name=PostName
And Branch_id=BranchID

با یه پست خاص چه کسانی در کل سازمان هستند.
مثل کوئری قبلی ست؛ تنها شرط Branch_id=BranchID رو ازش بردار.
موفق باشید.

soha_smb
سه شنبه 10 اردیبهشت 1392, 15:48 عصر
سلام
ممنون
BranchUnit_IDEnd همون BranchUnit_ID
Tbl_Record محل ثبت سوابق یه شخص هست(انتقال بین شعب/تشویق /تنبیه) یعنی فرد ممکنه که تو همون شعبه باشه و تشویق بشه .
فرض کنید یه نفر تویه شعبه استخدام میشه (این یه رکورد)
حالا تو همون شعبه که هست تشویق میشه(اینم یه رکورد دیگه)
حالا تو همون شعبه که هست تنبیه میشه(اینم یه رکورد دیگه)
حالا از اون شعبه منتقل میشه یه به شعبه دیگه(اینم یه رکورد دیگه)
و یه نفر دیگه به جای اون میاد(اینم یه رکورد دیگه)
حالا با اون چیزی که شما می گین میره . تمام کسایی که تو اون شعبه هستن و قبلا بودن رو میاره.
در صورتیکه نفر اول منتقل شده یه شعبه دیگه.

مهدی هادیان2
چهارشنبه 11 اردیبهشت 1392, 06:33 صبح
بسم الله الرحمن الرحیم
با سلام

حالا با اون چیزی که شما می گین میره . تمام کسایی که تو اون شعبه هستن و قبلا بودن رو میاره.
با مطالبی که فرمودید؛ فکر میکنم باید یه فیلد وضعیت از نوع بولین تو جدولتون داشته باشید.
موفق باشید.

khayyams.votary
چهارشنبه 11 اردیبهشت 1392, 13:21 عصر
با سلام
به نظر من شما می تونید یک فیلد به جدول کارکنان اضافه کنید که با جدول نمایندگی ها مرتبط باشه و در اون آخرین وضعیت کارمند رو که در کدوم شعبه است رو نگه دارین و در صورت عوض شدن هم اونو Update کنید
و با join کردن جداول هم می تونید هر کوری رو که می خوایید بکشید.