PDA

View Full Version : سوال: جستجو در 5 جدول و نمایش خروجی در یک دیتا گرید با Entity FrameWork



mamadcity
جمعه 15 شهریور 1392, 21:32 عصر
سلام خدمت دوستان بنده یک بانک اطلاعاتی دارم که با Entity FrameWork بهش وصلم
حالا یک جستجو داخل برنامه گذاشتم می خوام هر چی داخل تکست باکس سرچ نوشتم بره داخل این 5 تا جدول بگرده و نتیجه رو نشونم بده .. حالا نمی دونم چطور واسه این 5 تا جدول یه کوئری بنویسم
لطفا راهنمایی کنید

mamadcity
شنبه 16 شهریور 1392, 00:15 صبح
دوستان کسی هست قبلا این کار رو انجام داده باشه ؟

khokhan
شنبه 16 شهریور 1392, 07:44 صبح
دوستان کسی هست قبلا این کار رو انجام داده باشه ؟
شما برای انجام این کار بایستی یه فیلد مشترک در تمامی جداولتون داشته باشین یا اینکه به هر حال یه ارتباط چند جانبه میانشان برقرار کنین
سپس با یه کوری به صورت join می تونین داده هارو از این جداول واکشی کنین !!! به عنوان مثال این کوئری که برای فراخوانی اطلاعات از 3 جدول می باشد..... این روش رو می شه روی هر چندتا جدول که داشته باشین اجرا کرد به شرط وجود یک ارتباط منطقی :


var balance = (from a in context.Accounts
join c in context.Clients on a.UserID equals c.UserID
join d in context.Descriptions on c.ClientID equals d.ClientID
where d.DescriptionID == yourDescriptionID
select a.Balance)
.SingleOrDefault();

ویا :


var query = from p1 in context.P1s
join p2 in context.P2s on p1.Key equals p2.Key into list1
from l1 in list1.DefaultIfEmpty()
join p3 in context.P3s on l1.Key equals p3.Key into list2
from l2 in list2.DefaultIfEmpty()
select new { p1.....}

, واین کوئری برای join بیش از 3 جدول :


var match = from t1 in context.cKNA1
join t2 in context.cKNB1 on
new { t1.KUNNR, t1.RowId } equals
new { t2.KUNNR, t2.RowId }
join t3 in context.cKNVV on
new { t2.KUNNR, t2.RowId } equals
new { t3.KUNNR, t3.RowId }
join t4 in context.cKNVH on
new { t3.KUNNR, t3.RowId } equals
new { t4.KUNNR, t4.RowId }
SELECT t1.KUNNR;

mamadcity
شنبه 16 شهریور 1392, 15:52 عصر
راستش زیاد متوجه نشدم :افسرده:

khokhan
شنبه 16 شهریور 1392, 22:39 عصر
راستش زیاد متوجه نشدم :افسرده:
خیلی ساده است :لبخند::لبخند:
ما وقتی دوتا جدول رو join می کنیم ابتدا اون دوتا جدول رو نام می بریم وبعد به نکته اشتراکشون اشاره می کنیم
حال وقتی تعدا د جدولهامون زیاد شد باز از همون شیوه استفاده می کنیم
یعنی جدول اول و دوم رو نام می بریم و فیلد مشترکشون رو به عنوان رابط در نظر می گیریم
بعد جدول دوم رو با جدول سوم و فیلد مشترکشون join می کنیم
بعد جدول سوم رو با جدول چهارم join می کنیم براساس فیلد مشترکشون و الی آخر
با این شرط که همیشه مابین هر جفت جدول نکته مشرک باشه مانند حلقه های زنجیر

حالا به این جداول توجه کنین ، البته ارتباط این چهار جدول زیاد منطقی نیست و صرفا جهت رساندن مطلب می باشد و شما با ایجاد ارتباط بهتر و منطقی تر می تونین به نتایج زیباتری برسین :

110293

واین کوئری برای این 4 جدول :


var match = from t1 in context.person_inf
join t2 in context.kharid on t1.ncode equals t2.ncode
join t3 in context.kala on t2.k_code equals t3.k_code
join t4 in context.anbar on t3.anbar_id equals t4.anbar_id
select new
{
name = t1.fname,
family = t1.lname,
mally = t1.ncode,
kala = t3.k_name,
amount = t2.amount,
fee = t3.fee,
total = t2.total,
ambar=t4.anbar1

};

واین نتیجه کوئری از همون چهار جدول :

110294

mousa1992
یک شنبه 17 شهریور 1392, 00:41 صبح
ی راه دیگه هم داری! ی view بساز و بصورت ویزارد فیلدهای مورد نظرت رو انتخاب میکنی و بجا join کردن جداول از view انتخاب میکنی رکوردهات رو (view رو باید تو بانک بسازی) ولی خب join کردن رو حتما یاد بگیر