PDA

View Full Version : سوال: راهنمائی در مورد طراحی نوع خاصی از view برای حالتهای خاص



dark-man
پنج شنبه 12 دی 1387, 19:10 عصر
با سلام خدمت اساتید . در مورد عنوان تاپیک سوالی دارم ممنون میشم راهنمائیم کنید . سوال کمی پیچیده و شلوغ هست ممنون میشم اساتید سوال رو به دقت بررسی کنند و راه حلی رو معرفی کنند :

سوال :

من در دیتا بیس برنامه ای که در حال نوشتن آن هستم جداولی دارم . در بین این جداول یک جدول اصلی دارم که در این جدول اصلی ID های بعضی از جداول ذخیره می شود . در دیتا بیس مربوطه چند جدول دیگر هم هست به نامهای tb_customer و tb_car که ID این دو جدول در جدول اصلی که ذکر شد ذخیره میشوند . در این دیتا بیس سه جدول دیگر هم وجود دارد به نامهای tb_pelakDetails ، tb_pelak ، tb_pelakType که این جداول مربوط به پلاک خودرو می باشد . در جدول tb_pelaktype نوع پلاکها ذخیره شده است . در جدول tb_pelak دو فیلد ID وجود دارد که یکی مربوط به ID جدول pelaktype می باشد و یکی هم مربوط به جدول pelakdetails می باشد و یک فیلد ID بصورت Identity که مربوط به خود جدول می باشد . در جدول pelak details هم که جزئیات پلاکها ذخیره می شود که در این جدول 8 نوع پلاک وجود دارد . و در نهایت ID جدول pelak در جدول اصلی که در بالا ذکر شد ذخیره می شود . طبیعتا" برای هر ماشینی که ثبت می شود یک نوع پلاک می توان ثبت کرد .

حال چگونه view ئی را طراحی کنم که اگر در جدول اصلی ID فرضا" 10 انتخاب شد اطلاعات مربوط به آن ID را لیست کند . در جدول pelakdetails 8 نوع پلاک هست که نهایتا" یک نوع مربوط به یک خودرو می باشد . در واقع اگر ID جدول اصلی 10 بود و ID مربوط به Customer در جدول اصلی 10 بود و ID مربوط به خودرو هم 10 بود و همچنین ID بازگشتی از جدول pelak فرضا" 11 بود اطلاعات مورد نظر را نشان دهد . قابل توجه این که مقادیر تمام فیلدهای جدول pelakDetails بصورت پیش فرض null می باشد و هنکام فراخوانی view نباید مقادیر null نمایش داده شوند بلکه باید پلاک ثبت شده مربوطه نمایش داده شود .


ممنون میشم دوستان و اساتید در این زمینه راهنمائیم کنند . اگر توضیح بیشتری لازم بود بفرمائید تا عرض کنم .:لبخندساده:

تولائی
جمعه 13 دی 1387, 15:24 عصر
سئوال من این‌ه که مشکل تو با outer join کرد جدول اصلی‌ت با تمام جداول دیگه‌ات وقتی که فلیدهای جدول pelakDetails همه is not null باشند چی‌ه؟

dark-man
جمعه 13 دی 1387, 15:58 عصر
من دقیقا" منظور شما رو متوجه نشدم . اما به دلایلی که یکیش دستور insert در فیلدهای خاص برای هر حالت خاص هست مجبورم فیلدها رو null کنم که اگه مقداری وارد نشد null بده . حالا وقتی می خوام ویو رو بسازم . ویو طوری طراحی بشه که مقادیر فیلدها درست نشون داده بشه یعنی اگه یک خودرو پلاکش از نوع هشت بود فقط اطلاعات نوع هشت رو از جدول parkdetails بخونه و بقیه مقادیر که null هستند رو نشون نده . در حالت عادی میشه 8 نوع ویو مختلف ساخت که هر نوع از این ویو ها یک نوع پلاک رو شامل بشه اما می خوام بدونم برای این کار راه منطقی دیگه ای هم هست یا نه یا در واقع منطق sql در این مورد چیه و چه کار باید کرد . ممنون .

dark-man
جمعه 13 دی 1387, 19:31 عصر
کسی می تونه در این زمینه راهنمائیم کنه ؟

تولائی
جمعه 13 دی 1387, 19:38 عصر
می‌تونی یک کم در مورد ساختار جدول pelakDetails توضیح بدی. منظورم این‌ه که بگی چه ستون‌هایی داره. و دقیقا بگو می‌خوای گزارش رو تمام ماشین‌هات بگیری یا می‌خوای اطلاعات مربوط به یک ماشین مشخص رو واکشی کنی.

dark-man
شنبه 14 دی 1387, 08:55 صبح
می‌تونی یک کم در مورد ساختار جدول pelakDetails توضیح بدی. منظورم این‌ه که بگی چه ستون‌هایی داره. و دقیقا بگو می‌خوای گزارش رو تمام ماشین‌هات بگیری یا می‌خوای اطلاعات مربوط به یک ماشین مشخص رو واکشی کنی.

مشخصات جدول parkdetails رو براتون زیر لیست می کنم . . می خوام این ویو به یه دیتا گرید ویو وصل شه تا کاربر روی هر مشتری یا خودرو کلیلک کرد گزارش مربوط به اون مشتری واکشی بشه .

جزئیات parkdetails :

id = identity
------حالت اول از انواع پلاک------
pm_countery
pm_city
pm_right
pm_alpha
pm_left
-------جالت دوم از انواع پلاک------
plt_city
plt_code
plt_right
plt_alpha
plt_left
--------حالت سوم از انواع پلاک-------
plp_city
plp_right
plp_alpha
plp_left


اینا ئی که بالا نوشتم سه مورد از فیلدهائی هست که در جدول وجود داره و با 8 sp اطلاعات داخل این فیلدها ذخیره میشه . حالا وقتی اطلاعات داخل این فیلدها ذخیره بشه بقیه فیلدهای جدول خالی یا نال هستند هنگام نمایش در دیتاگرید ویو نمی خوام که اون مقدار نال نشون داده بشن . id هم بعد از ورود یک رکود به جدول pelak میره تا از اونجا id جدول pelak به جدول اصلی ارسال بشه . relation بین جداول برقرار شده .

تولائی
شنبه 14 دی 1387, 09:55 صبح
چرا برای این کارت از sp استفاده نمی‌کنی؟ یک sp بنویس که یک Id ماشین بگیره و پلاک رو بده. توی sp می‌تونی از if و else استفاده کنی و در مجموع برنامه بنویسی. نمی‌تونی viewئی داشته باشی که بنا به شرایط ستون‌هاش تغییر کنه.

dark-man
شنبه 14 دی 1387, 10:08 صبح
یعنی تو sp چک کنه که اگه یک ID از پلاک بهش پاس داده شد چک کنه ببینه کدوم فیلدها برای اون id نال نیستند و اونا رو برگردونه ؟ روشی که شما فرمودید رو میشه بر اساس id جدول اصلی یا id مشتری هم انجام داد ؟

تولائی
شنبه 14 دی 1387, 14:09 عصر
دقیقا منظورم این بود که از روی نوع پلاک فیلدهای مورد نظرت را select کنی. یعنی برای هر نوع select جدا از جدول parkdetails.
با توجه به اطلاعات داده شده می‌توانید از روی Idی مشتری Id جدول اصلی و از روی Id جدول اصلی Id پلاک و از روی Id پلاک نوع پلاک و از روی Id پلاک و نوع آن جرئیات پلاک را بدست بیاورید.