PDA

View Full Version : سوال: update كردن جدول اصلي از روي جدول فرعي



ali_abbasi22145
پنج شنبه 19 فروردین 1389, 12:41 عصر
سلام
من با SQL SERVER 2000 دارم و دو جدول دارم:

جدول t1 جدول اصلي شامل 50000 ركورد است كه:
ركورد اول با كد محل خدمت" 100" و نام "عباسي" و محل خدمت نداريم.
ركورد دوم با كد محل خدمت" 101" و نام "صمدي" و محل خدمت نداريم.
ركورد سوم با كد محل خدمت" 103" و نام "حسيني" و محل خدمت نداريم.

جدول t2 جدول فرعي شامل 2000 ركورد است كه:
ركورد اول با كد محل خدمت" 100" و محل خدمت "ساختمان اداري"
ركورد دوم با كد محل خدمت" 101" و محل خدمت "فني و مهندسي"
ركورد سوم با كد محل خدمت" 103" و محل خدمت "تعميرات"

و تعداد اين ركوردها زياد است و نمي خواهم دستوري بنويسم كه از اول بانك تا آخر را چك كند وهرچه "100" داريم را در جدول اصلي كد محل خدمتش را update كند به "ساختمان اداري" و الي آخر چون 2000 بار بايد اين كار تكرار شود و امكان پذير نيست!

محمد سلیم آبادی
پنج شنبه 19 فروردین 1389, 12:46 عصر
سلام،
جواب تاپیک قبلی یتان رو گرفتین؟ یا اینکه فراموشش کردین!
http://www.barnamenevis.org/forum/showthread.php?t=209422

ali_abbasi22145
پنج شنبه 19 فروردین 1389, 12:58 عصر
سلام،
جواب تاپیک قبلی یتان رو گرفتین؟ یا اینکه فراموشش کردین!
http://www.barnamenevis.org/forum/showthread.php?t=209422
سلام و تشكر
آن مشكل را يك جور ديگر حل كردم و به هر حال ممنون!
آما خوب دقت كنيد مي بينيد كه فرق مي كند و راه حل براي اين مي خواهم

محمد سلیم آبادی
پنج شنبه 19 فروردین 1389, 13:00 عصر
آن مشكل را يك جور ديگر حل كردم
امکان داره راه حلی که مساله رو با هاش حل کردین رو در همون تاپیک قرار بدین تا ما هم استفاده کنیم؟


آما خوب دقت كنيد مي بينيد كه فرق مي كند و راه حل براي اين مي خواهم

من به سوالتون در این تاپیک پاسخ می دم

محمد سلیم آبادی
پنج شنبه 19 فروردین 1389, 13:06 عصر
سلام
من با SQL SERVER 2000 دارم و دو جدول دارم:

جدول t1 جدول اصلي شامل 50000 ركورد است كه:
ركورد اول با كد محل خدمت" 100" و نام "عباسي" و محل خدمت نداريم.
ركورد دوم با كد محل خدمت" 101" و نام "صمدي" و محل خدمت نداريم.
ركورد سوم با كد محل خدمت" 103" و نام "حسيني" و محل خدمت نداريم.

جدول t2 جدول فرعي شامل 2000 ركورد است كه:
ركورد اول با كد محل خدمت" 100" و محل خدمت "ساختمان اداري"
ركورد دوم با كد محل خدمت" 101" و محل خدمت "فني و مهندسي"
ركورد سوم با كد محل خدمت" 103" و محل خدمت "تعميرات"

و تعداد اين ركوردها زياد است و نمي خواهم دستوري بنويسم كه از اول بانك تا آخر را چك كند وهرچه "100" داريم را در جدول اصلي كد محل خدمتش را update كند به "ساختمان اداري" و الي آخر چون 2000 بار بايد اين كار تكرار شود و امكان پذير نيست!

چرا دو جدول رو بایکدیگر JOIN نمی کنید سپس UPDATE بشن؟


UPDATE T1
SET T1.City_name = T2.City_name
FROM T1
INNER JOIN T2
ON T1.ID = T2.ID

ali_abbasi22145
جمعه 20 فروردین 1389, 15:30 عصر
سلام
من برای تاپیک قبلی با left join یک جدول از دوتا ساختم و کارم اینجوری حل شد مثل روش شما در بالا :



SELECT CardDB2.dbo.Ext_View.first_name, CardDB2.dbo.Ext_View.last_name, CardDB2.dbo.Ext_View.employee_number

,CardDB.dbo.CardTable.sicard,CardDB.dbo.CardTable. tag,CardDB.dbo.CardTable.photo_tag, CardDB.dbo. CardTable.log_of_card_print,
CardDB.dbo.CardTable.creation_date,CardDB.dbo.Card Table.creation_date_sh,CardDB.dbo.CardTable.last_m odified,CardDB.dbo.CardTable.last_modified_sh,
CardDB.dbo.CardTable.photo_last_modified, CardDB.dbo.CardTable.photo_last_modified_sh,CardDB .dbo.CardTable.print_date,CardDB.dbo.CardTable.pri nt_date_sh,
CardDB.dbo.CardTable.number_of_print, CardDB.dbo.CardTable.number_of_modified, CardDB.dbo.CardTable.number_of_photo_modified,
CardDB.dbo.CardTable.print_status, CardDB.dbo.CardTable.card_format, CardDB.dbo.CardTable.picture_file_name

FROM CardDB2.dbo.Ext_View
LEFT JOIN CardDB.dbo.CardTable ON CardDB2.dbo.Ext_View.employee_number = CardDB.dbo.CardTable.employee_number

ORDER BY CardDB2.dbo.Ext_View.employee_number

برای اینکه مشکلم حل شد ولی روش من راه حل برای سوالم نبود و برای همین در آنجا مطرح نکردم.

ali_abbasi22145
جمعه 20 فروردین 1389, 19:49 عصر
خیلی متشکر دوست عزیز آقای msalim