PDA

View Full Version : حرفه ای: جستجو از جداول مختلف



bftarane
سه شنبه 05 فروردین 1393, 20:58 عصر
سلام.
فرض کنید جداولی داریم مربوط به کارجو
که این جداول در یک فیلد
UserCode
مشترک هستند
مثلاً جدولی که گروه های شغلی که کاربر تواناییش رو داره
جدولی که سمت های شغلی انتخابی کاربر در اون ثبت میشه
و غیره

حالا یه فرم جستجو به شکل زیر داریم
چطور میشه برای این جستجویی نوشت که
خروجی اون
UserCode
هایی باشه که در جستجو شرایط انتخاب شده رو دارن
و اگه مثلاً یک کاربر چند تا از شرایط رو همزمان داشت
مثلاً جنسیتش زن بود
و رشته تحصیلیش هم کامپیوتر بود
و استانش تهران بود
نیاد سه بار کد اون کاربر رو نشون بده
همون یک بار نشون بده

select UserCode from tbl_jobkind where kind=@kind

select UserCode from tbl_City where city=@city
.
.
.
خوب به ازای تمام جداول میشه سلکت هایی مثل بالا نوشت ولی اینکه اینا چطور نتیجه ها باید ادغام بشن رو من مشکل دارم.

لطفاً راهنمایی کنید. شدیداً احتیاج دارم به راهنمایی.
این هم تصویر فرم جستجو
117291
من نمی تونم از SP ها استفاده کنم چون پایگاه داده این پروژه اکسس هست.

elahe_sd
چهارشنبه 06 فروردین 1393, 00:03 صبح
سلام دوست عزیز
فکر نمی کنید با inner joinبین جداول مورد جستجو ، بتونید به خواسته تون برسید؟!
ببینید توی join بین چند جدول همه اطلاعات با کلیدهای خارجی به هم متصل اند و اگر شما شرط های متوالی برای هر جدول را اعمال کنید سطرهای مد نظرتون بدست میاد.البته تا جایی که ترم 1 کار کردم یادم میاد اکسس کلید خارجی داشت. اما Query نمیدونم میشه زد یا نه؟!

aminireza65
چهارشنبه 06 فروردین 1393, 00:11 صبح
من معمولا در این جور مواقع select تو در تو میزنم.

bftarane
چهارشنبه 06 فروردین 1393, 09:00 صبح
Inner join رو امتحان می کنم ولی شک دارم اینجا جواب بده.
من با استفاده از این دستورات

protected void Button1_Click(object sender, EventArgs e)
{
DALBase DBase = new DALBase();
string sql = "Select RegisterCode from UserSelectedWork where work_code = @wc"
+ " UNION"
+ " Select RegisterCode from UserSelectedJob where job_post_code = @jpc"
+ " UNION"
+ " Select RegisterCode from ComponyKind where personal = @k1 or half_personal = @k2 or zer0_personal = @k3"
+ " UNION"
+ " Select RegisterCode from HireKind where full_time = @hk1 or half_time = @hk2 or quarter_time = @hk3 "
//+ ""
//+ ""
;
OleDbDataReader dr= DBase.ExecuteReader(System.Data.CommandType.Text,s ql,new OleDbParameter[]{
new OleDbParameter("@wc",drp_JobKind.SelectedValue),
new OleDbParameter("@jpc",drp_JobPost.SelectedValue),
new OleDbParameter("@k1", cbl_Personal.Checked),
new OleDbParameter("@k2", cbl_Half.Checked),
new OleDbParameter("@k3", cbl_Zero.Checked),
new OleDbParameter("@hk1", cbl_Full.Checked),
new OleDbParameter("@hk2", cbl_HalfTime.Checked),
new OleDbParameter("@hk3", cbl_Quarter.Checked)


});

GridView1.DataSource = dr;
GridView1.DataBind();

}
نتایج رو تونستم با هم ادغام کنم ولی یه مشکل وجود داره که حواسم بهش نبود. با دستورات بالا مثلاً کاربرانی که گروه شغلی A براشون در جداول ثبت شده بوده + کاربرانی که مثلاً شرکت خصوصی رو انتخاب کردن + .... + .... نمایش داده میشن ولی من می خوام حالت And وجود داشته باشه یعنی فقط کاربرانی که هم شرکت خصوصی و هم گروه شغلی A و هم .... و هم .... رو دارن نشون داده بشن. یعنی حالت OR نباشه And باشه.
امیدوارم متوجه منظورم بشین.
سلکت تو در تو رو امتحان می کنم ببینم می تونم یا نه.
شدیداً منتظر راهنمایی هستم.

angel farahani
چهارشنبه 06 فروردین 1393, 23:51 عصر
سلام ، میشه بفرمایید این فرم رو که تصویرش رو گذاشتید چطوری طراحی کردین ؟ چون من در پروژه ام در asp بیشتر از گرید ویو و detail view استفاده میکنم که دردسرهای خاص خودش رو داره .

ممنونم میشم اگر من رو راهنمایی کنید تا فرم این طوری طراحی کنم. سپاس

meysam99
پنج شنبه 07 فروردین 1393, 11:53 صبح
آگه مشکل این هست که میخوای نتایج مختلف رو با هم جمع کنی می توانی از UNION استفاده کنی که نتایج جستجو های مختلف رو با هم جمع می کنه و بعد می توانی تکراری های آنها رو حذف کنی

meysam99
پنج شنبه 07 فروردین 1393, 12:00 عصر
یه پیشنهاد بهتر شما باید در انتهای هر خط از کوئری یک and اضافه کنید و بعد کوئری بعدی و یک شرط که اگه اون فیلد در جستجو باشد اون تیکه کد به کوئری شما اضافه شود و احتیاجی به راههای پیچیده نیست.



string sql = "Select RegisterCode from UserSelectedWork where work_code = @wc"
if (true){
sql +=" and job_post_code = @jpc"
OleDbParameter("@jpc",drp_JobPost.SelectedValue) //اضافه کردن پامتر
}

bftarane
پنج شنبه 07 فروردین 1393, 23:13 عصر
سلام ، میشه بفرمایید این فرم رو که تصویرش رو گذاشتید چطوری طراحی کردین ؟ چون من در پروژه ام در asp بیشتر از گرید ویو و detail view استفاده میکنم که دردسرهای خاص خودش رو داره .

ممنونم میشم اگر من رو راهنمایی کنید تا فرم این طوری طراحی کنم. سپاس
این فرم رو من طراحی نکردم، یکی از همکارام طراحی کرده که به دلیلی ادامه کارش به من سپرده شده و فرم جستجو ناقص تحویل داده شد به من. ولی چیز خاصی نیست یه سری تکست باکس و دراپ دان و چک باکس.
راستش درگیر کار دیگه ای شدم که وقت نشد این کار رو انجام بدم فعلاً به محض اینکه نتیجه گرفتم اینجا مطرح می کنم.

angel farahani
جمعه 08 فروردین 1393, 00:05 صبح
ممنونم ، ولی من بخش اتصال به پایگاه SQL آن را با این فرم مشکل دارم ، در این زمینه اگر اطلاعی دارید بفرمایید که یاد بگیرم .

bftarane
جمعه 08 فروردین 1393, 14:55 عصر
احتمالاً منظورتون پر کردن دراپ دان لیست های مرتبط با هم از دیتابیس هست در این صورت لینک زیر می تونه کمکتون کنه:
http://aspsnippets.com/Articles/Cascading-DropDownList-for-CountryStateCity-in-ASPNet.aspx