ورود

View Full Version : سوال: ارتباط بین جداول دیتابیس و ایجاد یک کوئری



hosein3000
یک شنبه 17 اردیبهشت 1391, 23:07 عصر
با سلام خدمت تمامی مهندسین عزیز و گرامی
توی دیتابیس برنامه من از جدوال زیادی استفاده شده البته شاید این غیر حرفه ای باشه به هر حال
کل جداول این دیتابیس به هم مربوطه و من می خوام طوری گزارش تهیه کنم که وقتی نام مالک رو کاربر وارد کرد سایر سطر های جداول مربوط به این مالک رو نشون بده
در این دیتابیس جدولی داره به نام mosh که مشخصات مالک توش ثبت میشه من می خوام طوری این جدول ها به هم ارتباط داشته باشه که وقتی توی یک گزارش یا پرس و جو نام مالک رو وارد کردم سایر جداول مربوط به این مالک رو نشون بده
چند ماه پیش که تو این فروم این سوال رو مطرح کردم دوستان فرمودند که می تونم با ایجاد یک کوئری و ارتباط بین جداول اینکارو انجام بدم
اما من با روشهایی که تو اینترنت پیدا کردم نتونستم این جداول رو به یکدیگر ارتباط بدم و یا وقتی ارتباط دادم نتونستم اطلاعات وارد کنم و وقتی هم روش اتصال رو عوض کردم کلا اکسس هنگ کرد
خلاصه من نتونستم اینکارو انجام بدم
من دیتابیسو به این تایپک کردم اگر از دوستان یکی زحمتشو بکشه و جداول این دیتابیس رو به هم ربط بده و بتونه یک کوئری با مشخصاتی که گفتم تهیه کنه یک دنیا ممنون میشم
بد جوری گیر این مشکل موندم
ممنون میشم راهنماییم کنین
با سپاس فراوان

hosein3000
سه شنبه 19 اردیبهشت 1391, 00:28 صبح
از دوستان کسی برای این مشکل راه حلی نداشت؟

m.4.r.m
سه شنبه 19 اردیبهشت 1391, 10:41 صبح
سوال های منو جواب بده برات یه کاریش می کنم :

شما فعلا تا جایی که دیدم جداولتون خیلی بیش از اندازه غیر استاندارد و به قول برنامه نویس ها آنومالی داره باید نرمال سازی بکنی عزیزم جداول BetonT1 تا Betont4 اضافس شما بگو برنامه واسه چه کاری هست ؟
ببین وقتی می خوای پایگاه داده درست کنی نباید هر چی دلت می خواد بیای جدول درست کنی این اشتباهه خودتم گیج میشی . ببین من یه مثال می زنم برات :

مثلا برای درست کردن پایگاه داده یک مصالح فروشی شما به چیا احتیاج داری ؟ اونا رو باید در بیاری مثلا یکیش داشتن تمام اطلاعات مصالح هستند : گچ ، سیمان و .... اینا میشه یه جدول و برای هر کاری که می خوای یک جدول درست نمی کنن . باید از چند تا جدول کوچیک یه جدول بزرگ و با ارتباط درست کنی کلید جدول اولیت تو جدول دوم باشه که خود به خود ارتباط بر قرار میشه

یه چیزی می گم از دستم دلخور نشو اینی که ساختی اصلا به درد نمی خوره نمی خوام نا امیدت کنم نه ، میخوام ماهی گیری یادت بدم این طور برنامه نوشتن از ننوشتن بهتره داری خودتو سر کار میزاری اول بشین یه کتاب پایگاه داده بخون بعد شروع کن به ساختن جدول به خاطر خودت می گم و الا من کاره ای نیستم . این پایگاه داده رو هیچ کس نمی تونه ارتباط بده بهش چون اصلا فیلد هاش استاندارد نیستند برای ارتباط باید اصول رو حفظ کنی من به پایگاه داده نمینونه برات میزارم نگاه کن از روش یاد بگیر . اگه سوالی داشتی بپرس کمکت می کنم اما این پایگاه داده اصلاً درست نمیشه از اول درست کن با اصول و استاندارد بزار بارزه به کاری که می کنی .

hosein3000
سه شنبه 19 اردیبهشت 1391, 11:21 صبح
خوب منم همون اول گفتم که ناشیانه است حالا بیام از اول کتاب بخونم خیلی سخته
نمیشه برای این کاری کرد؟؟؟

یا اینکه نمیشه از دوستان مثل همین دیتابیس البته استانداردشو زحمتشو بکشه؟
چی کار کنم به نظرتون
؟

m.4.r.m
سه شنبه 19 اردیبهشت 1391, 15:57 عصر
ببین دوست عزیز کسی نمیاد برات دیتابیس درست کنه اونم ایران و مفت !!! ؟؟؟؟

در ضمن همون اول که داری پروژه رو شروع می کنی باید فکر همه جاشو بکنی عزیز این دیتابیس رو کسی درست نمی کنه برات شایدم بکنه اما وقت و حوصله چند ساعته می خواد . از ما گفتن بود از شما نشنیدن

hosein3000
چهارشنبه 20 اردیبهشت 1391, 09:50 صبح
خوب منظورتون رو متوجه نشدم؟
بعدش هم میشه بفرمایین کجای دیتابیس اضافیه؟
چون من بر اساس فرم هایی که دارم این جدول ها رو طراحی کردم یعنی می خوام همه اطلاعات تو جداول باشه
قدیما یکی از دوستان گفتن که مثلا چند تا از جدول ها رو ادغام کن منم اینکارو کردم اما وقتی بعضی از اطلاعات که نیازی نیست فرضا تو یک پروژه وارد بشه اونا فیلد هاشون خالی موندن به همین علت مجبور شدم اینکارو انجام بدم
قراره تو این فروم به مشکلات هم برسیم دیگه
مگه نه؟
به نظر شما کدوم جدول ها رو با هم ادغام کنم؟

ممنون میشم راهنماییم کنبن
مرسی

m.4.r.m
چهارشنبه 20 اردیبهشت 1391, 14:25 عصر
تو پاسخ اولم گفتم beton1 تا 4 رو بررسی کن اینا 4 تا می تونن 1 جدول یا نهایت 2 جدول باشن و بقیه هم مثل هم عزیزم تو برنامه می نویسی موجودیت ها رو در میاری تو باید تعداد جداولتو بررسی کنی ببینی فیلد های اضافت کجاس چی به دردت می خوره چی نمیخوره می خوای برنامتو بده برات بنویسم راحت کن خودتو یکم تلاش کن .

hosein3000
چهارشنبه 20 اردیبهشت 1391, 23:06 عصر
با تشکر به خاطر وقتی که برای مشکل من میزارین
ولی فقط بگم که بتن 1 تا بتن 4 درسته فیلد هاش یکسانه ولی 4 تا تیپ مختلفه به همین علت اعدادی که توشون ذخیره می شن باهم فرق دارن به همین علت موندم چیکار کنم
بعدشم من برنامه ام رو نوشتم
با این دیتابیس هم کارمو راه انداختم
فقط می خواستم یک کوئری درست کنم که وقتی مثلا کاربر نام مالک رو وارد کرد بتونه سایر جداول مربوط به اون مالک رو مشاهده کنه

m.4.r.m
چهارشنبه 20 اردیبهشت 1391, 23:30 عصر
واسه اینکار به کلک رشتی هست اونم استفاده از فیلتر adodc با adodc فیلتر کن و فیلد های مربوطه رو تو قسمت data field تکست ها ست کن بعد وقتی فیلتر کردی مقدار فیلتر شده فرم اول رو مقدار فیلتر شده فرم دوم رو باهم مساوی بگیری میتونی اینو پیاده سازی کنی

hosein3000
چهارشنبه 20 اردیبهشت 1391, 23:52 عصر
میشه بیشتر توضیج بدین؟؟؟؟
یه نمونه ندارین بذارین
؟

m.4.r.m
چهارشنبه 20 اردیبهشت 1391, 23:57 عصر
بزار بگردم دارم نمونه برات میزارم

hosein3000
جمعه 22 اردیبهشت 1391, 14:12 عصر
خبری نشد؟؟
منتظرم؟

m.4.r.m
جمعه 22 اردیبهشت 1391, 19:23 عصر
اینم سورس برنامه اما فقط به پایگاه داده نگاه کن . ( ببین فیلد هاشو چه جوری تعیین کردم )
اگه پایگاه داده خطا اتصال گرفت خودت دستی مسیر رو بهش بده

hosein3000
جمعه 22 اردیبهشت 1391, 21:20 عصر
با تشکر
ولی این چه فرقی با مال من نداره
تو این دیتابیس شما نه کلید تعریف کردی نه realationship
خوب منم اینکارو کردم دیگه

hosein3000
شنبه 23 اردیبهشت 1391, 00:20 صبح
مهندس جان من منظور شما رو متوجه شدم
باید یک فیلد تعریف کنیم که توی کلیه جدول ها مقدار یکسان داشته باشه
خوب به نظر شما برای دیتابیس من چطور این فیلد رو تعریف کنیم که برای همه جداول یکسان باشه؟
البته من فکر می کنم باید برای هر مالک یک کد تعریف کرد که این کد توی جداول دیگه هم کپی بشه که بشه با این کد نتایج رو فیلتر کرد اما من موندم چطور اینکارو انجام بدم که وقتی یک مالک جدید تعریف کردیم و یک کد درست شد همزمان این کد در جداول دیگه هم تولید بشه

m.4.r.m
شنبه 23 اردیبهشت 1391, 00:27 صبح
ناراحت نشو این دیگه به برنامه نویسی شما بستگی داره شما کلا از برنامه نویسی تحت دیتابیس ضعیف هستی من بیشتر از این دیگه چه توضیحی بدم ؟ شما هنوز پایگاه داده بلد نیستی درست کنی اینجا کلاس آموزش بانک اطلاعاتی نیست حل مشکله نه ساخت پروژه خلاقیت به خرج بده درست کن پایگاه داده شما کلا اضافه زیاد داره من کلید تعریف نکردم که ببینی بدون کلید و relationship هم میشه ارتباط داد یه نمونه پایگاه داده دادم بهت با relationship که اونم نگرفتی کف گفتم از رو اون پایگاه داده ساختنو یاد بگیر که شما کلا دنبال کد اماده ای من دیگه چی باید یاد میدادم که ندادم ؟ برنامه نویس اول کار می کنه یکی دو خط که مشکل داره می پرسه

hosein3000
یک شنبه 24 اردیبهشت 1391, 16:56 عصر
خوب شاید حق با شما باشه
اما تو دیتابیس شما اثری از ارتباط نبود فقط یک فیلتر ساده
قرار شد نحوه ارتباط جداول برای ساخت کوئری رو یاد بگیریم؟
مگه نه/؟

m.4.r.m
یک شنبه 24 اردیبهشت 1391, 20:23 عصر
خوب نمونه دادم بهت از روش یاد بگیر دیگه ببین و نگاه کنی یاد میگیری .
من هرچی تئوری بگم تا عملی کار نکنی یاد نمیگیری ، ببین شما دو تا جدول کاری به اسم اطلاعات دانش آموز و نمرات .

جدول شماره 1:

کد دانش آمور ( کلید اصلی )
نام و نام خانوادگی
ش.ش.
ت.ت.
کد ملی
شماره تلفن
آدرس

جدول شماره 2 :

کد دانش آموز ( کلید خارجی )
کد درس
نام درس
نام معلم
ترم درس
نمره

خوب حالا به طور اتوماتیک ارتباط 2 تا جدول برقرار شد .

حالا میری تو قسمت Relation ship که برات نمونه توضیحمو گذاشتم بگیر فکر نکنم دیگه بیشتر از این لازم به توضیح باشه و در ضمن شما وقتی می خوای با یک جدول دیگه ارتباط داشته باشی فقط کلید اصلی جدول اولی تو دومی تکرار بشه کافیه لازم نیست همه فیلد هارو تکرار کنی تو مثال میتونی برات گذاشتم بهتر درک کنی .
موقعی که می خوای تو کد نویسی ارتباط برقرار کنی باید یه همچین دستوری رو پیاده سازی کنی مثال میزنم بقیه رو خودت یاد بگیر

SELECT Grade.course_id, Grade.Code_st, Grade.Grade,
Grade.Teacher_n, Grade.Term, Student.Name,
Student.Family
FROM Grade, Student
WHERE Grade.Code_st = Student.Code_st

به اصطلاح به اینا میگن کوئری .
یاد گرفتی ؟