PDA

View Full Version : سوال: الحاق ركوردها



مهدي هراتي
سه شنبه 18 تیر 1387, 12:01 عصر
سلام دوستان

من يك جدول دارم كه اطلاعات معاينات پزشكي در اون ذخيره ميشه. اطلاعات اشخاص در يك جدول ديگر قرار داره و يك فيلد در جدول معاينات دارم كه كد شخص در اون قرار مي گيره و از طريق اين فيلد جداول را Join مي كنم.

پزشك به ازاي هر جلسه معاينه يك ركورد براي هر شخص در جدول معاينات وارد ميكنه. آيتمهايي كه مورد معاينه هستند 32 مورد مي باشند. پزشك در هر جلسه فقط چند تا از اين آيتمها رو مدنظر قرار ميده. مثلا در جلسه اول آيتمهاي 2،6،3،11 و در جلسه دوم تعدادي ديگر و الي آخر. در جلسه اول ركوردي تشكيل مي شود كه از بين 32 فيلد موجود در آن فقط فيلدهاي 2،6،3،11 پر شده و مابقي خالي هستند. در جلسه دوم و ساير جلسات هم همينطور (فقط برخي از فيلدها پر مي شوند)

حالا صورت مسئله اينه كه بعد از اتمام يك دوره معاينه من به ازاي هر شخص تعدادي ركورد دارم كه مجموعاً همه 32 مورد معاينه رو در بر داره. چه نوع Query بنويسم كه ركوردهاي يك شخص را الحاق كنه و يك ركورد در مورد هر شخص به من بده كه شامل همه موارد معاينه باشه؟

با تشكر

amin_alexi
سه شنبه 18 تیر 1387, 12:27 عصر
سلام


select *
from Tbl2
Left Join Tbl1 On Tbl1.PrsCode=Tbl2.PrsCode


این Query دو جدول Tbl1و Tbl2 رو به هم Joinمی کنه ...PrsCode هم همون کد شخصه Tbl1 هم جدول اطلاعات اشخاص و Tbl2 هم جدول معاینات ...
امیدوارم مشکل حل شده باشه ....
به شرطی که من درست موضوع شما رو فهمیده باشم و گرنه بیشتر توضیح بدین !!

shaghaghi
سه شنبه 18 تیر 1387, 12:32 عصر
سلام
شما می بایست ساختار بانکتان را تغییر دهید بطوریکه برای هر یک از آیتم های مورد معاینه یک کد و یک شرح تعریف کنید و آنرا در جدولی بعنوان جدول پایه ذخیره نمایید، نه اینکه هر کدام آنها را یک فیلد تعریف کنید که بعدها با محدودیت هم روبرو شوید.
حالا به ازای هر آیتم معاینه در یک جلسه یک رکورد که شامل ID آن جلسه و کد آیتم معاینه از جدول قبلی است add کنید
فکر کنم با این کار، گرفتن Query بسیار ساده تر شده و ساختار بانکتان بهینه شود و فیلد خالی غیر ضروری نخواهید داشت.

مهدي هراتي
سه شنبه 18 تیر 1387, 12:41 عصر
با تشكر از توجه شما
مشكل من Join كردن نيست!
فرض كنيد جدول معاينات 4 فيلد به نامهاي قد، وزن، چشم چپ و چشم راست داره
در جلسه اول معاينه، پزشك قد تك تك افراد را اندازه گرفته و در جدول معاينات وارد مي نمايد. بدين ترتيب به ازاي هر شخص يك ركورد در جدول معاينات ثبت مي شود. اگر 10 نفر را داشته باشيم 10 ركورد معاينه داريم. ركوردهايي كه درج شده اند فقط حاوي اطلاعات قد هستند و ساير فيلدها (وزن و چشمها) خالي هستند.
در جلسه دوم پزشك افراد را وزن مي كند. بدين ترتيب 10 ركورد در جدول معاينات درج خواهد شد كه حاوي اطلاعات وزن است. پس فيلدهاي قد و چشمها خالي هستند.
در جلسه سوم پزشك چشم افراد را معاينه مي كند. باز هم 10 ركورد ساخته مي شود كه حاوي نتيجه معاينه جشمهاست. در اين ركوردها فيلدهاي قد و وزن خالي هستند.

حالا ما 30 ركورد داريم كه در 3 جلسه درج شده اند. ولي گزارشي كه مي خواهيم بدهيم بايد 10 ركورد (براي هر شخص يك ركورد) داشته باشد كه حاوي مجموع معاينات شخص مربوطه باشد. ركوردهايي مي خواهيم كه هر چهار فيلدش پر باشد.

سوال من اينه كه آيا راهي وجود داره كه با نوشتن يك Query بشه اين كار رو كرد؟
راهي كه به نظر خودم رسيده اينه كه هنگام توليد گزارش يك جدول معاينه موقتي ايجاد كنم و براي هر شخص يك ركورد در آن درج كنم و نتيجه معاينات هر شخص رو در ركورد مربوط به خودش وارد كنم. پس از چاپ گزارش هم جدول موقتي رو پاك كنم. ولي مسئله اينجاست كه 32 فيلد داريم و از اونجايي كه پس از مدتي تعداد ركوردها زياد ميشه، ممكنه اين روش سرعت خوبي نداشته باشه.

amin_alexi
سه شنبه 18 تیر 1387, 12:51 عصر
چرا به ازای هر سری معاینه Record جدید میزنی !؟
اگه رکورد رو ویرایش کنی نمیشه ؟
یا اینکه می خوای تاریخ معایه رو هم داشته باشی !؟
1 سوال دیگه نتیجه معاینه چیه ؟ یعنی برای معاینه چشم تو Field مربوطه یک عدد ذخیره میشه یا یک رشته به عنوان توضیح ؟

مهدي هراتي
سه شنبه 18 تیر 1387, 13:16 عصر
بله تاريخ و ساعت هر معاينه ثبت ميشه.
توي برخي از فيلدها عدد ذخيره ميشه و توي بعضي رشته. مثلا در مورد چشم، فشار خون، قد و وزن و ... عدد ذخيره ميشه و در مورد بهداشت دهان و دندان و بعضي موارد ديگه رشته (توضيح) نوشته ميشه.

لينك زير حاوي يك نمونه از گزارش معاينات هست
http://www.pcischools.com/images/news/check.jpg

با تشكر از توجه شما

night_walker
چهارشنبه 19 تیر 1387, 18:31 عصر
با سلام
راه حل خیلی ساده است یا باید این هر رکورد رو Edit کنی و اطلاعات رو دوباره وارد کنی و راه بهتر اینه که به ازای هر مشخصه فرد از قبیل قد، وزن، چشم و ... یک جدول داشته باشی با تاریخ معاینه و کد بیمار سپس باید این جدولها رو با هم Join کنی که خودت استادی.