ورود

View Full Version : اتصال به دو table با یک query



solook
سه شنبه 08 اسفند 1385, 19:56 عصر
یا حق
با سلا م به دوستان
من با این کد توسط ADOQuery به دو جدول اتصال برقرار نمودم

select *from table1,table2با دیتابیس کم حجم استفاده کردم خوب جواب داد اما وقتی از دیتابیس پر حجم استفاده کردم به شدت روی رم دستگاه تاثیر گذاشت و با کاهش زیاد سرعت مواجه شدم
راه چاره چیست؟

mehdi_mohamadi
سه شنبه 08 اسفند 1385, 20:29 عصر
ممکنه بیشتر توضیح بدی که ساختار جداولت چیه و واسه چه کاری استفاده می کنی؟

Sohrab_Tapar
سه شنبه 08 اسفند 1385, 21:12 عصر
دلیلش ساده است.وفتی از این دستور به این شکل استفاده میکنی اگه table1 دارای n1 رکورد و table2 دارای n2 رکورد باشه نتیجه query دارای n1*n2 رکورد است.

nasr
سه شنبه 08 اسفند 1385, 21:16 عصر
باید توجه داشته باشی که این دستور با توجه به اینکه هیچ شرطی نداره به ازای هر رکورد از یکی از جداول کلیه اطلاعات را تکرار میکنه.
بایداز iner join , outer join یا union استفاده کنی

solook
سه شنبه 08 اسفند 1385, 21:17 عصر
دیتابیس اکسس هست و مقادیر memo و number و text ر ا دارد


دلیلش ساده است.وفتی از این دستور به این شکل استفاده میکنی اگه table1 دارای n1 رکورد و table2 دارای n2 رکورد باشه نتیجه query دارای n1*n2 رکورد است.

روش صحیح برای این کار چیست؟

V60
چهارشنبه 09 اسفند 1385, 01:17 صبح
معمولا باید اینجوری کد را بنویسی


from table1 inner join table2 on table1.id=table2.id

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


from table1 left join table2 on table1.id=table2.id

که در این صورت جدول یک شما اسم افراد و جدول دو شما حقوق افراد می باشد . البته می توان جای نام جداول را عوض کنی و از right join استفاده کنی ، موفق باشی و خواهشا سوالت راکامل بنویس تا بتوان کوتاه و موثر پاسخ داد . متشکر