PDA

View Full Version : بازیابی اطلاعات از چند جدول



Amir Taghavi
چهارشنبه 10 اسفند 1384, 09:49 صبح
سلام

طبق تصاویر زیر می خواهم نام Userهایی که هم در جدول Users و هم در جدول Master وجود دارند را نمایش دهم. از دوستان کسی می تونه به من کمک کنه؟

برا مثال طبق تصاویر ، نتیجه باید به اینصورت باشد :


amir
ali
mani


با تشکر

reza_rad
چهارشنبه 10 اسفند 1384, 09:57 صبح
شما باید از join استفاده کنی.
اینجوری:


select name from users,master where users.name=master.users


البته باید جدولها هم یک کمی اطلاعاتشون تغییر کنه.
یعنی نکته ی مهمتر اینکه دو تا user رو توی یک رکورد توی جدول master وارد نکن. جدا جدا واردشون کن.

AminSobati
چهارشنبه 10 اسفند 1384, 10:06 صبح
دوست عزیزم،
جدول Master از قائده اول نرمال سازی تخطی میکنه. رعایت نکردن قواعد نرمال سازی، منجر به داشتن مشکلات در Query گرفتن، ویرایش اطلاعات و ... میشه.
بر طبق این اصول، مقدار هر فیلد باید Atomic باشه، یعنی به اجزاء کوچکتر قابل تقسیم نباشه. در جدول Master، مقدار amir, ali قابل تجزیه به دو مقدار کوچکتر هستند. باید در طراحی این جدول تجدید نظر بفرمایید.

AminSobati
چهارشنبه 10 اسفند 1384, 10:15 صبح
شما باید از join استفاده کنی.
اینجوری:


select name from users,master where users.name=master.users


البته باید جدولها هم یک کمی اطلاعاتشون تغییر کنه.
یعنی نکته ی مهمتر اینکه دو تا user رو توی یک رکورد توی جدول master وارد نکن. جدا جدا واردشون کن.
رضا جان این Join هیچ وقت مقدار amir, ali رو برنمیگردونه. مگر اینکه Query به شکل زیر تغییر کنه (البته اصلا توصیه نمیکنم):


select name from users join master on master.users like '%' + users.name + '%'

Amir Taghavi
چهارشنبه 10 اسفند 1384, 11:13 صبح
سلام دوستان

البته منم زیاد از طراحی این جدول یه جورایی خوشم نیومده !

قضیه اینه که چون Userها بصورت گروهی انتخاب میشن و باید بصورت گروهی در جدول Insert بشن چاره ای نداشتم جز اینکه تمام Userهای انتخاب شده رو در یک رکورد ( در Master )قرار بدم و یک بار دیگه برای اینکه بتونم اونارو (User) تفکیک کنم و یکسری عملیات روشون انجام بدم در جدول Users بصورت تکی قرار بدم. در واقع با این کار می خواستم رکوردهای فیلد Users جدول Master مانند یک ComboBox رفتار کنند.

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

با تشکر

AminSobati
چهارشنبه 10 اسفند 1384, 13:07 عصر
شما میتونین یک فیلد GroupID در کنار هر کاربر در نظر بگیرین. کاربرهای هم گروه، طبیعتا شماره مشترک خواهند داشت. برای کنار هم نوشتن نام کاربرهایی که در یک گروه هستند امکان Query نوشتن وجود داره، اما اگر کاربرهای هم گروه رو در یک فیلد نگهداری کنید، تفکیکشون مشکل سازه

Amir Taghavi
پنج شنبه 11 اسفند 1384, 22:08 عصر
سلام


شما میتونین یک فیلد GroupID در کنار هر کاربر در نظر بگیرین

اتفاقاً منم همین کار رو کردم، ولی مسئله اینجاست که چطوری کاربرای همگروه را در کنار هم قرار بدم. من قصد دارم کاربران همگروه رو دقیقاً یکجا نمایش بدم.


برای کنار هم نوشتن نام کاربرهایی که در یک گروه هستند امکان Query نوشتن وجود داره


میشه لطفاً یک نمونه Query رو ذکر کنید

با تشکر

rabinhood_tehran
دوشنبه 15 اسفند 1384, 09:33 صبح
آیا کسی میتونه به این سئوال در حالت کلی جواب بده؟
در حالتی که ارتباطها پیچیده تر باشه!!!
Performance در نظر گرفته بشه لطفا:(