لیست اعضای غایب هر حضور غیاب در یک بازه زمانی مشخص ؟
سلام دوستان مشکل من در یک کوئری است:
سه تا جدول دارم با نام های ozviat,ap,present که به شرح زیر میباشند
ozviat : برای نگهداری اطلاعات اعضا
ap : برای نگهداری حضور غیاب های هر گروه که شامل فیلدهای 1- کد حضور غیاب 2- تاریخ 3- ساعت حضور غیاب 4- کد گروهی که حضور غیاب روی آن انجام شده.
present : برای نگهداری لیست افرادی که در هر حضور غیاب هستند استفاده میشود که با ap رابطه دارد. شامل فیلد های : 1- کد منحصر به فرد 2- کد حضور غیاب 3- کد عضو 4- وضعیت حضور(حضور، غیبت موجه)
یه چیز اینکه فقط افراد حاضر و غیبت موجه نگهداری میشوند و افراد غایب در جدول present نگهداری نمیشوند.
تونستم لیست اعضای حاضر و غیبت موجه ،هر حضور غیاب در یک بازه زمانی مشخص رو در بیارم.
حالا میخوام که لیست اعضای غایب هر حضور غیاب در یک بازه زمانی مشخص رو داشته باشم ! چطوری؟خواهش میکنم یک کوئری برام بزارید کارم گیره . ممنون .
اینم کوئری لیست افراد حاضر و غیبت موجه هر حضور غیاب گفتم شاید کمک کنه:
select enter_number,ap.id_present from ozviat,ap,present where ap.id_group='1' and ozviat.id_group=ap.id_group and ap.id_present=present.id_present and ozviat.enter_number=present.id_ozve and ap.date>=13940604 and ap.date<=13940613
خروجی :
مثلا در کد حضور غیاب 4 ، فقط عضو شماره 10000001 حاضر هست و بقیه غایب هستند حالا میخوام غایبین رو در بیارم خواهش میکنم کمک کنید
3 پاسخ
سلام
دوست عزیز من آنچنان توجه مهندسی بانکت نشدم
فقط ...
به نظر من یک table بزا برای روز تاریخ و ساعت و یک کد بش اختصاص بده
یک table هم که لیست اعضا هستش
یک table هم برای حضور غیاب بزار اینجوری که مثلا کد روز 1 شخص با کد 100 حاضر بوده
حاضر یا غایب بئدن هم با یک فیلد بیت میشه true یا false بودنش رو چک کرد
داخل شرط ها هم میتونی از عملگر between یا in استفاده کنی کارت راحت میشه
با تشکر از شما دوست عزیز ولی وضعیت حاضر بودن افراد سه حالته (حضور ، غیبت موجه و غایب) است.
من فقط توی جدول حضور و غیاب افرادی که حاضر یا غیبت موجه هستند رو ثبت میکنم و افرادی که غیبت دارن رو ثبت نمیکنم ، خب طبیعتا وقتی فردی حاضر یا غیبت موجه نباشد ، غایب خواهد بود .
این طوری هم دیتای کمتری ذخیره میشه و هم کاربر موقع ثبت حضور و غیاب کمتر وقتش گرفته میشه. (چون افراد غایب رو ثبت نمیکنه).
حالا میخوام لیست افرادی که غیبت دارن رو در بیارم ولی کدشو نمیدونم اگه یه راهنمایی یا کوئریش رو برام بزارین ممنون میشم.
با سلام
ببینید دوست عزیز بنده احساس می کنم قدری سناریو رو پیچیده کردید(در مورد توضیح دادن)
و اینکه اون روش کوئری که نوشتید مناسب نیست!
من در یکی از پروژه هام به همچین موردی برخورد کردم که شباهت بسیار زیادی با مسئله شما دارد.
و اما جداول موجود :
1-جدول اشخاص (کد-نام و نام خانوادگی،نام پدر و...)
2-جدول منطقه جغرافیایی (کد،نام منطقه جغرافیایی،موقعیت مکانی)
3-جدول حضور و غیاب (کد،کد اشخاص،کد منطقه جغرافیایی،وضعیت حضور(حاضر است یا غایب است)،نوع غیبت(موجه یا غیر موجه)،
ساعت،تاریخ،کد کاربر سیستم و...)
در جدول حضور و غیاب براحتی می تونیم بگیم که چه شخص در چه منطقه ای حضور داشته یا خیر و دوم اینکه اگر غیبت داشته ،غیبتش موجه بوده ی غیر موجه! که جنس این دو فیلد هم از نوع Bit است.
نکته در خصوص مقدار دهی این دو فیلد(افراد حاضر =1 ،افراد غایب =0 ،غیبت موجه=1، غیبت غیر موجه=0)
حال با یک INNER JOIN ساده بین 3 تا جدول و همینطور اعمال شرط بر روی جدول حضور غیاب براحتی می تونید به گزارش مد نظرتون برسید.
با تشکر