ورود

View Full Version : راهنمایی در کوئری با دو شرط و ساب کوئری



رامین مرادی
یک شنبه 25 تیر 1396, 10:55 صبح
وقت بخیر.
عنوان مناسبی پیدا نکردم .شرمنده

من کوئری زیر رو نوشتم

select Tahsilat from TahsiliTbl
where Tahsilat in (SELECT Tahsilat FROM Moshakhasat )
AND Reshteh in (SELECT Reshteh FROM Moshakhasat )


وقتی شرط دوم رو اعمال میکنم. فقط داده هایی رو از مشخصات بیرون میاره که رشتشون خالی هست.

- خواسته من هم اینه که : من یه جدول تحصیلات دارم و یه جدول مشخصات.
تو جدول مشخصاتم یه سری فیلد ها هستن که مثلا رشته و تحصیلات.

تو جدول تحصیلاتم یه سری فیلد ها مثلا اسم شخص و تحصیلات و رشته هاشون هست.
حالا من میخوام تمام کسایی که از نظر رشته و تحصیلات شبیه به هر رکورد جدول مشخصاتم هستن بدست بیارم.
(یعنی لیست افراد مربوط به هر مشخصات)
ممنون میشم راهنماییم کنید.

Davidd
یک شنبه 25 تیر 1396, 11:40 صبح
وقت بخیر. کوئری که شما نوشتی افرادی میاره که رشته شون توی جدول مشخصات باشه و تحصیلاتشونم تو جدول مشخصات باشه.
اگه مسئله رو درست فهمیده باشم میتونی از join استفاده کنی
select t.Tahsilat from TahsiliTbl t INNER JOIN Moshakhasat m
ON t.Tahsilat=m.Tahsilat AND t.Reshteh=m.Reshteh

رامین مرادی
یک شنبه 25 تیر 1396, 11:56 صبح
وقت بخیر. کوئری که شما نوشتی افرادی میاره که رشته شون توی جدول مشخصات باشه و تحصیلاتشونم تو جدول مشخصات باشه.
اگه مسئله رو درست فهمیده باشم میتونی از join استفاده کنی
select t.Tahsilat from TahsiliTbl t INNER JOIN Moshakhasat m
ON t.Tahsilat=m.Tahsilat AND t.Reshteh=m.Reshteh




دوست عزیز مد نظر باشه که کلا هیچ ارتباطی بین این دو جدول برقرار نیست.
این کوئری هم همون قبلی رو میاره فقط با این تفاوت که هر کدومو چهار بار تکراری مینویسه.

-----------------------------------
یه توضیح کاملتر هم بنویسم.
یه جدول درخواست نیرو داریم که شامل مقطع تحصیلی و رشته تحصیلی هست.(جدول درخواست نیرو)
یه جدول تقاضای کار هم داریم شامل نام شخص و مقطع تحصیلی و رشته تحصیلی(جدول تقاضای کار)

خب ما الان میخوایم ببینیم کدوم افراد مناسب درخواست نیرومون هستن. که رشته و تحصیلاتشون با جدول درخواست نیرو مطابقت داشته باشه.

یه کد درخواست نیرو رو میدیم و افرادی که مناسب اون درخواست هستن رو بهمون نشون بده.
اگه نیازه بازم بیشتر توضیح بدم

Davidd
یک شنبه 25 تیر 1396, 13:02 عصر
دوست عزیز مد نظر باشه که کلا هیچ ارتباطی بین این دو جدول برقرار نیست.
این کوئری هم همون قبلی رو میاره فقط با این تفاوت که هر کدومو چهار بار تکراری مینویسه.

-----------------------------------
یه توضیح کاملتر هم بنویسم.
یه جدول درخواست نیرو داریم که شامل مقطع تحصیلی و رشته تحصیلی هست.(جدول درخواست نیرو)
یه جدول تقاضای کار هم داریم شامل نام شخص و مقطع تحصیلی و رشته تحصیلی(جدول تقاضای کار)

خب ما الان میخوایم ببینیم کدوم افراد مناسب درخواست نیرومون هستن. که رشته و تحصیلاتشون با جدول درخواست نیرو مطابقت داشته باشه.

یه کد درخواست نیرو رو میدیم و افرادی که مناسب اون درخواست هستن رو بهمون نشون بده.
اگه نیازه بازم بیشتر توضیح بدم
لازم نیست بین جداول حتما ارتباطی باشه به هر حال فیلد رشته و تحصیلات بین دو جدول مشترک هست. کوئری که نوشتم باید درست کار کنه. شما باید توی قسمت select فیلدهایی که نیاز داری بنویسی. من فقط تحصیلات نوشتم میتونی به این صورت اصلاحش کنی :
select t.* from TahsiliTbl t INNER JOIN Moshakhasat m
ON t.Tahsilat=m.Tahsilat AND t.Reshteh=m.Reshteh

رامین مرادی
یک شنبه 25 تیر 1396, 13:24 عصر
لازم نیست بین جداول حتما ارتباطی باشه به هر حال فیلد رشته و تحصیلات بین دو جدول مشترک هست. کوئری که نوشتم باید درست کار کنه. شما باید توی قسمت select فیلدهایی که نیاز داری بنویسی. من فقط تحصیلات نوشتم میتونی به این صورت اصلاحش کنی :
select t.* from TahsiliTbl t INNER JOIN Moshakhasat m
ON t.Tahsilat=m.Tahsilat AND t.Reshteh=m.Reshteh



نتیجه این دستور میشه این

145772

که درست نیست. :افسرده:
نمیشه به جای = از Like استفاده کرد؟ چون ممکنه کلمات به همراه پیشوند پسوند داشته باشن(استفاده کردم اینبار خروجی همونا بود با این تفاوت که یک در میان چاپ میشن)

Davidd
یک شنبه 25 تیر 1396, 13:42 عصر
نتیجه این دستور میشه این

145772

که درست نیست. :افسرده:
نمیشه به جای = از Like استفاده کرد؟ چون ممکنه کلمات به همراه پیشوند پسوند داشته باشن(استفاده کردم اینبار خروجی همونا بود با این تفاوت که یک در میان چاپ میشن)

من فکر کردم جدول TahsilatTbl مشخصات افراد هست در صورتی که جدول تقاضا بوده. این کوئری تست کنید
select m.* from Moshakhasat m INNER JOIN TahsiliTbl t
ON t.Tahsilat=m.Tahsilat AND t.Reshteh=m.Reshteh

رامین مرادی
یک شنبه 25 تیر 1396, 14:35 عصر
من فکر کردم جدول TahsilatTbl مشخصات افراد هست در صورتی که جدول تقاضا بوده. این کوئری تست کنید
select m.* from Moshakhasat m INNER JOIN TahsiliTbl t
ON t.Tahsilat=m.Tahsilat AND t.Reshteh=m.Reshteh




باز فک کنم من اشتباه گفتم.
نه همون مدل قبلی درسته باید برای هر مشخصاتی یه سری افراد رو بیاره که تحصیلات مرتبط داره.:افسرده:
مثلا برای مشخصات 9/001 که تحصیلات کارشناسی و رشته مکانیک مورد نیازه ، چندین تقاضای کار رو برای ما بیاره که تحصیلاتشون کارشناسی و رشتشون مکانیک هست

رامین مرادی
دوشنبه 26 تیر 1396, 10:24 صبح
خودم به این نتیجه رسیدم


select EstekhdamSavabegTahsiliTbl.TagazaId,EstekhdamSavab egTahsiliTbl.Tahsilat,EstekhdamSavabegTahsiliTbl.R eshteh from EstekhdamSavabegTahsiliTbl,TagazaEstekhdamTbl where TagazaEstekhdamTbl.TagazaId=EstekhdamSavabegTahsil iTbl.TagazaId AND EstekhdamSavabegTahsiliTbl.Tahsilat Like N''+(Select MoshakhasatNiroTbl.Tahsilat from MoshakhasatNiroTbl where DarkhostId='" + DarkhostId + "') AND N'%'+(Select MoshakhasatNiroTbl.Reshteh from MoshakhasatNiroTbl where DarkhostId='" + DarkhostId + "')+'%' LIKE N'%'+ EstekhdamSavabegTahsiliTbl.Reshteh+'%' order by TagazaId Desc



از شما هم تشکر.