PDA

View Full Version : سوال: دستور merge در sql server 2005



bahram_ariana
شنبه 02 مرداد 1389, 07:19 صبح
در sql server2008 برای ادغام دو جدول از دستور merge میتوان استفاده کرد. ولی دستور merge در sql server2005 کار نمی کند. راه حل چیست. لطفا راهنمایی بفرمائید. با تشکر فراوان

محمد سلیم آبادی
شنبه 02 مرداد 1389, 15:24 عصر
شما می توانید از چند دستور جدا از همه update, delete و insert بر اساس JOIN استفاده کنید.

bahram_ariana
شنبه 02 مرداد 1389, 16:52 عصر
با تشکر از مدیر بخش msalim، در سایت msdn جستجو کردم و با استفاده از Output و update , چند دستور insert و delete مشکل حل شد.

ghoroghchian
یک شنبه 03 مرداد 1389, 17:10 عصر
دوست خوب من bahram_ariana (http://www.barnamenevis.org/forum/member.php?u=148839) سلام

من میخام اطلاعات دو جدول رو merge کنم.ساختار دو جدول هم دقیقا عین هم هست.آیا راه حلی دارین؟یا این جوری بگم دوتا DB عین هم دارم که میخام اطلاعاتش رو بریزم داخل یکی.
میشه راجع به راه حلتون بیشتر توضیح بدین؟فک کنم به دردم بخوره.

با تشکر

bahram_ariana
یک شنبه 03 مرداد 1389, 18:23 عصر
دوست عزیز من ghoroghchian (http://www.barnamenevis.org/forum/member.php?u=148839) سلام

در خصوص ادغام دو جدول در sql server 2008 با استفاده از دستور merge براحتی امکان پذیر است اما در sql server 2005 ، چون دستور merge نداریم من از روش زیر استفاده کردم.
فرض کنیم اطلاعات جدول table1 را می خواهیم با جدول table2 ادغام کنیم.اگر فیلد DocId بعنوان فیلد کلیدی در این دو جدول باشد و DocName یکی دیگر از فیلدها باشد آنگاه:

declare table @tmp (id int)
update table1 set DocId=t2.DocId,DocName=t2.DocName
output inserted.DocId into @tmp
from table1 as t1, table2 as t2
where t2.DocId=t1.DocId
insert into table1
(DocId,DocName)
select DocId,DocName from tabel2 where DocId not in (select id from @tmp)