PDA

View Full Version : حرفه ای: اضافه نمودن رکوردهای غیر مشترک دو جدول به جدول سوم



abas1388
سه شنبه 08 دی 1394, 12:37 عصر
سلام
در نمونه فایل ضمیمه سه جدول با عناوین T1 ، و T2 و TTemp وجود دارد . جدول T1 جدول اصلی است که کلیه رکوردها در آن است ، در جدول T2 تعدادی از رکوردهای جدول T1 وجود دارد .
میخواهم آن تعداد رکوردی که در جدول T1 وجود دارد ولی در جدول T2 وجود ندارد به جدول TTemp اضافه شود ؛ به عبارتی میخواهم رکوردهای غیر مشترک دو جدول T1و T2 به جدول TTemp انتقال یابد .
در نمونه ضمیمه بنده برای این کار یک اپند کوئری ایجاد نموده ام و در قسمت Criteria فیلد code شرط Not In (SELECT Nz(Code) from T2) را بکار برده ام که با شرط فوق عملیات مورد نظر بنده بدرستی انجام میشود اما ایراد کار در این است که عمل انتقال اطلاعات قدری زمانبر است . مثلاً در نمونه ضمیمه برای انتقال تعداد 3188 رکورد غیر مشترک زمانی در حدود 25 ثانیه باید سپری شود که مطمئناً با افزایش رکوردها این زمان نیز بیشتر میشود .
ضمناً از متد dlookup نیز در کوئری مربوطه استفاده نمودم که از طریق آنهم همین زمان طول می کشد.
لذا از دوستان با تجربه تمنا دارم برای حل این موضوع یک راهکار منطقی و مناسب که زمان کمتری را برای انتقال داده ها سپری نماید ارائه نمایند.
با تشکر

Abbas Amiri
سه شنبه 08 دی 1394, 12:49 عصر
سلام
در نمونه فایل ضمیمه سه جدول با عناوین T1 ، و T2 و TTemp وجود دارد . جدول T1 جدول اصلی است که کلیه رکوردها در آن است ، در جدول T2 تعدادی از رکوردهای جدول T1 وجود دارد .
میخواهم آن تعداد رکوردی که در جدول T1 وجود دارد ولی در جدول T2 وجود ندارد به جدول TTemp اضافه شود ؛ به عبارتی میخواهم رکوردهای غیر مشترک دو جدول T1و T2 به جدول TTemp انتقال یابد .
در نمونه ضمیمه بنده برای این کار یک اپند کوئری ایجاد نموده ام و در قسمت Criteria فیلد code شرط Not In (SELECT Nz(Code) from T2) را بکار برده ام که با شرط فوق عملیات مورد نظر بنده بدرستی انجام میشود اما ایراد کار در این است که عمل انتقال اطلاعات قدری زمانبر است . مثلاً در نمونه ضمیمه برای انتقال تعداد 3188 رکورد غیر مشترک زمانی در حدود 25 ثانیه باید سپری شود که مطمئناً با افزایش رکوردها این زمان نیز بیشتر میشود .
ضمناً از متد dlookup نیز در کوئری مربوطه استفاده نمودم که از طریق آنهم همین زمان طول می کشد.
لذا از دوستان با تجربه تمنا دارم برای حل این موضوع یک راهکار منطقی و مناسب که زمان کمتری را برای انتقال داده ها سپری نماید ارائه نمایند.
با تشکر

سلام
از کوئری زیر استفاده کنید:
SELECT T1.*
FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID
WHERE (((T2.ID) Is Null));

abas1388
سه شنبه 08 دی 1394, 15:27 عصر
سلام
از کوئری زیر استفاده کنید:
SELECT T1.*
FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID
WHERE (((T2.ID) Is Null));


سلام
ممنون آقای امیری !
عالی بود.
چند روز است که دنبال راهکار برای موضوع فوق بودم ولی راهکاری پیدا نکردم ؛ که جنابعالی خیلی سریع راهکار منطقی را ارائه نمودید.
متشکرم