PDA

View Full Version : مقایسه دو جدول



فاطی.جدا
پنج شنبه 02 خرداد 1392, 14:23 عصر
سلام.من سوالم رو در تاپیک دیگه ای مطرح کردم که گفتن باید در این بخش مطرح بشه.
من یک دیتابیس دارم که یه سری جدول داره و هر جدول شامل یه سری فیلد.تقریبا اطلاعات سایر جدول هام ثابت هست اما دو تا جدول هست که احتمالا مدام تغییر بکنه و بهش اطلاعات اضافه بشه.علاوه بر اضافه شدن رکوردها ، احتمال تغییر در بعضی فیلدهای رکوردهای حاضر هم وجود داره.
من راه حلی رو میخوام که برنامه کاربر وقتی کانکت میشه به سرور تشخیص بده که که دیتابیس خودش با دیتابیس اصلی تفاوت داره.بعد از تشخیص بهینه ترین راه حل رو که کمترین زمان و حجم رو هم استفاده کنه لازم دارم تا تغییرات روی دیتابیس کاربر اعمال بشه

بهروز عباسی
پنج شنبه 02 خرداد 1392, 18:37 عصر
من راه حلی رو میخوام که برنامه کاربر وقتی کانکت میشه به سرور تشخیص بده که که دیتابیس خودش با دیتابیس اصلی تفاوت داره.بعد از تشخیص بهینه ترین راه حل رو که کمترین زمان و حجم رو هم استفاده کنه لازم دارم تا تغییرات روی دیتابیس کاربر اعمال بشه
میتونی تغییرات رو به صورت دوره ای -مثلاً یک روزه - توی یک Table موقت ذخیره کنی تا Client ها موقع بروز رسانی با توجه به اون Table موقت DB خودشون رو به روز رسانی کنن.

بهروز عباسی
پنج شنبه 02 خرداد 1392, 18:57 عصر
اگه میخوای دوتا Table رو مقایسه کنی اینا به دردت میخوره

این با استفاده از EXCEPT (http://msdn.microsoft.com/en-us/library/ms188055.aspx)

SELECT Name, DOB FROM Table1 EXCEPT SELECT Name, DOB FROM Table2



این ID تمام Record هایی که در Table1 هستن ولی در Table2 نیستند به همراه تمام Record هایی که در Table2 هستن و لی در Table1 نه! به شما بر میگردونه


SELECT ID From Table1 WHERE ID NOT IN (SELECT ID FROM Table2)
UNION
SELECT ID From Table2 WHERE ID NOT IN (SELECT ID FROM Table1)



اینم با استفاده از تابع CHECKSUM (http://www.mssqltips.com/sqlservertip/1023/checksum-functions-in-sql-server-2005/) موجود در MS SQL Server
select T1.* from Table1 T1 join Table2 T2 on CHECKSUM(T1.Name,T1.DOB)!= CHECKSUM(T2.Name,T2.DOB)



منبع (http://stackoverflow.com/questions/11793152/compare-two-sql-server-tables?rq=1)

موفق باشید

فاطی.جدا
شنبه 04 خرداد 1392, 13:18 عصر
خیلی ممنون از راهنمایی شما.یک مشکلی این وسط وجود داره و اون اینکه از این راه ها برای پیدا کردن رکوردهایی هست که تو جدول کاربر نیست.
اما مساله آپدیت ها رو چطور بررسی کنم.شاید یکی از فیلدها ویرایش شده باشه.این رو چطور تشخیص بدم؟