PDA

View Full Version : سوال: گرفتن کوئری از دو جدول در دو دیتابیس مختلف



reza-abi
شنبه 07 آذر 1388, 08:50 صبح
شرح مسئله:
ما دو جدول در دو دیتا بیس مختلف داریم و می خواهیم رکورد هایی رو برگردونیم
که مقدار کلید های خارجی جداولشون با هم برابر هستش

مثلا:
database1: Reg ,Table:Reg ,Columns:ID,Name
database2: Sabt,Table:Amanat ,Columns:Code,ID,Date
کلید خارجی :ID

رکورد های برگشتی باید حاوی فیلد های زیر باشه:
Columns:Code,Amanat.ID,Name,Date

تو رو خدا اگه کسی میدونه کوتاهی نکنه

تقریبا یه این جور چیزی:

http://barnamenevis.org/forum/attachment.php?attachmentid=40432&stc=1&d=1259387053

debugger
شنبه 07 آذر 1388, 09:59 صبح
در بخش sql مطرح کنید

به نظرم باید از join استفاده کنید

seven7777777
شنبه 07 آذر 1388, 11:02 صبح
من متوجه نمیشم که چرا تو دو تا دیتابیسه ولی در کل چند کار به ذهنم میرسه :
1. راه بی خودی = اطلاعات هر دو جدول رو واکشی کنی تو C# و بعد اونجا بریزی مثلا تو دو تا DataSet یا هر چیز دیگه و بعد اونجا هر کار می خوای بکنی .

2. راه بهتر = یک جدول واکشی کنی و بعد مقادیرشو در کویری برای جدول دیگر بکار ببری .

3. راه نمی دونم شدنیه یا نه = با استفاده از StoredProcedure ها ، داخل خود SQL کویری بنویسی و ارتباط دو تا جدول از دو تا دیتابیست رو برقرار کنی .

hamidsolat
شنبه 07 آذر 1388, 18:17 عصر
میتونی از Join دو تا جدول استفاده کنی فقط کافی توی دستور Join بنویسی
SELECT * FROM database1
INNER Join database2
On database1.id=database2.id

reza-abi
یک شنبه 08 آذر 1388, 11:10 صبح
میتونی از Join دو تا جدول استفاده کنی فقط کافی توی دستور Join بنویسی
SELECT * FROM database1
INNER Join database2
On database1.id=database2.id

خب حالا من چطور بصورت همزمان به این دو دیتابیس ارتباط برقرار کنم و با این کوئری اطلاعات رو دریافت کنم؟

ASKaffash
یک شنبه 08 آذر 1388, 11:28 صبح
سلام
با یک ConnectionString مناسب به یکی از دو DB وصل میشوید و مثلا این SP را اجرا میکنید :


Select *
From DB1.dbo.Table1 T1
Left Join DB2.dbo.Table2 T2 On (شرط اتصال)
Where ....
Order By ...

reza-abi
یک شنبه 08 آذر 1388, 11:36 صبح
سلام
با یک ConnectionString مناسب به یکی از دو DB وصل میشوید و مثلا این SP را اجرا میکنید :


Select *
From DB1.dbo.Table1 T1
Left Join DB2.dbo.Table2 T2 On (شرط اتصال)
Where ....
Order By ...


مرسی از راهنمایی تون
ولی من کاملا متوجه نشدم یعنی نیازی نیست که ما به دیتابیس دوم کانکت بشیم . پس اگه فقط نام دیتا بیس رو وارد کنیم جواب می ده ؟

ASKaffash
یک شنبه 08 آذر 1388, 12:20 عصر
مرسی از راهنمایی تون
ولی من کاملا متوجه نشدم یعنی نیازی نیست که ما به دیتابیس دوم کانکت بشیم . پس اگه فقط نام دیتا بیس رو وارد کنیم جواب می ده ؟

سلام
هیچ فرقی نمی کند کافیست فقط به یک متصل شوید

reza-abi
دوشنبه 09 آذر 1388, 10:46 صبح
اگه بشه یه سورسی یا قطعه کد کاملی از کانکت به دیتابیس تا نمایش در دیتا گرید ویو رو بزاری ممنون می شم

sky_in_iran
سه شنبه 10 آذر 1388, 12:41 عصر
سلام دوست عزيز
شما براي انجام اين كار يعني برقراري ارتباط بين دو بانك جدا از دو روش Linked Server ، Replication ميتوني استفاده كني براي اطلاعات كامل تر بهتره به تاپيك هاي sql بري اگر كارت را نيفتاد بگو يك نمونه برات من يا اساتيد محترم بزاريم

sky_in_iran
سه شنبه 10 آذر 1388, 12:45 عصر
اين موضوع رو اضافه كنم كه شما ميتوني از دستور openrowset استفاده كنيد اگه تو help موجود در sql خودت جستجو كني (OpenRowSet)‌ خودش هم توضيح داره و هم نمونه موفق و پيروز باشي