ورود

View Full Version : واکشی اطلاعات از چند جدول در صورتی که مطمئن نباشیم اطلاعات یک کاربر در کدام جداول درج نشده



bftarane
سه شنبه 26 فروردین 1393, 20:25 عصر
سلام.
فرض کنید 10 جدول داریم که همه اونها داری فیلد RegisterCode هستند.
یعنی جدول اصلی ما دارای کلید اولیه RegisterCode هست و در جداول دیگر این فیلد به عنوان کلید خارجی هست.

حالا کاربر می تونه در این 10 چدول جداگانه عمل درج رو انجام بده و درج فقط در جدول اول به صورت الزامی هست.
یعنی ممکنه در جدول اصلی یک RegisterCode مثلاً 3408 وجود داشته باشه ولی در هیچ کدام از جداول دیگه این 3408 وجود نداشته باشه
ولی ما موقع واکشی می خواهیم که همه فیلدهای مرتبط با RegisterCode 3408 واکشی بشن

با چند تا جدول یه مثال درست کردم تا بهتر متوجه منظورم بشید
118030
اینم چند تا داده تستی
118031
و فرض کنید نتیجه مطلوب من به شکل زیر باشه، حالا راهی داره نتیجه زیر رو داشته باشیم؟
118032

ممنون.

////////////////////////////////////////
////////////////////////////
که اگه تونستم این جدول رو به دست بیارم، حالا برای جستجوی پیشرفته می شه استفاده بشه ازش که مثلاً
برو افرادی که رنگ مورد علاقه شان قرمز، یا آبی هست و سنشان بزرگ تر از 32 هست و جنستیتشون مرد هست رو کدشون رو نشون بده

که البته الآن به ذهنم رسید اینم یه مشکل دیگه داره اینه که فرضاً فرد مجرد یا متأهل بودنش رو ثبت نکرده باشه و فرضاً True نمایانگر متأهل باشه

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

پس حالا یه سوال دیگه پیش می یاد، آیا در جدول آخری که گذاشتم میشه در فیلد Married به جای False،
null نمایش داده بشه؟ خودم که بعید می دونم ولی راه بهتری به ذهنم نمی رسه.

espootin
سه شنبه 26 فروردین 1393, 20:44 عصر
با سلام.

این خروجی را خیلی راحت توسط Join می توانید بدست آورید، یه مقدار زمان بذارید و در مورد Join ها و خصوصا Inner Join که مشکل شما را حل خواهد کرد مطالعه بفرمایید. بدین ترتیب هم ساختار کوری زدن رو یاد می گیرد و هم اینجور مسائل براتون دیگه حل میشه.

سوال دوم، بله شدنی هست، فقط اجازه ذخیره Null‌ را بدهید(Allow Null(.

bftarane
چهارشنبه 27 فروردین 1393, 09:02 صبح
خصوصا Inner Join که مشکل شما را حل خواهد کرد
با Inner Join در صورتی که رکورد مرتبط نداشته باشیم حتی فقط در یک جدول نتیجه ای واکشی نمی شه، ولی این مسئله با Left Join حل شد.
ممنون می شم اگه با Inner Join بگید به چه صورت می شه اینکار رو کرد، بعید می دونم بشه.