ورود

View Full Version : سوال: نوشن کوری روی جداول با ارتباط چند به چند



alibahman47
سه شنبه 28 آذر 1396, 15:26 عصر
درود,

جداولی با ارتباط زیر رو دارم ,

Tbl_Color : جدول رنگ ها
Tbl_ColorProduct : اختصاص دادن رنگ به یک محصول
http://up.persianscript.ir/uploads2/e044-Color-RelationShip.jpg




در بخش جستجوی سایت میخوام وقتی کاربر چندتا رنگ رو انتخاب میکنه محصولاتی که همه اون رنگ های انتخابی در جدول Tbl_ColorProduct براشون ثبت شده رو نشون بدم.




- توضیح مراحل انجام کار :
بعد از اینکه کاربر در Ui سایت چندتا رنگ رو انتخاب کنه و تیک بزنه:
http://up.persianscript.ir/uploads2/9dc1-Color.jpg


یک لیست از آی دی رنگ های انتخابی به سمت اکشن زیر فرستاده میشه :

http://up.persianscript.ir/uploads2/8eea-Parametr.jpg

و بعد روی جداول مربوط کوری زیر رو میزنم :
http://s9.picofile.com/file/8314661326/any.jpg



حالا این کوری رو چطور بنویسم که فقط محصولاتی رو انتخاب کنه که همه اون رنگ های انتخابی براشون در جدول Tbl_ColorProduct ثبت شده باشه ؟

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

parvizwpf
سه شنبه 28 آذر 1396, 15:58 عصر
بجی Any از All استفاده کنید

alibahman47
سه شنبه 28 آذر 1396, 16:31 عصر
بجی Any از All استفاده کنید

تست شد , حالا اگه یه رنگ انتخاب بشه محصولاتی که اون رنگ براشون انتخاب شده باشه رو برگشت میده و اگه بیشتر از یک رنگ انتخاب بشه هیچ محصولی رو در نتیجه برگشت نمیده .

alibahman47
سه شنبه 28 آذر 1396, 16:52 عصر
این هم مدل ها :
http://s9.picofile.com/file/8314666818/all.jpg

http://s8.picofile.com/file/8314666826/Model.png

parvizwpf
سه شنبه 28 آذر 1396, 16:55 عصر
شما با این کوئری دنیال یه محصول هستی یا چند محصول؟ چون شما اومدی آیدی محصول رو هم کوئری زدی این یعنی فقط ی محصول بنظرم
All یعنی اینکه اگر تمام آی دی رنگها رو داشت پس برگردونش. اما Any میگه اگر فقط یکی از آیدی رنگها رو داشت برگردون

parvizwpf
سه شنبه 28 آذر 1396, 16:56 عصر
بجای دوتا from چرا join استفاده نمیکنید؟

parvizwpf
سه شنبه 28 آذر 1396, 16:57 عصر
جوین بزنید و به همراه All انشا اله درست میشه
نمونه جوین:
var innerJoinQuery =
from category in categories
join prod in products on category.ID equals prod.CategoryID
select new { ProductName = prod.Name, Category = category.Name };

alibahman47
پنج شنبه 30 آذر 1396, 20:53 عصر
شما با این کوئری دنیال یه محصول هستی یا چند محصول؟ چون شما اومدی آیدی محصول رو هم کوئری زدی این یعنی فقط ی محصول بنظرم
All یعنی اینکه اگر تمام آی دی رنگها رو داشت پس برگردونش. اما Any میگه اگر فقط یکی از آیدی رنگها رو داشت برگردون

بخاطر استفاده از Lazy Load نیاز به join نیست.
ببینید من سه تا جدول دارم ,
رنگ ها - محصول - اعمال رنگ به محصول(Color_Product)


شما اومدی آیدی محصول رو هم کوئری زدی این یعنی فقط ی محصول بنظرم
اون رو هم برای این نوشتم که فقط محصولاتی که داخل Color_Product رنگی براشون ثبت شده انتخاب بشن .

parvizwpf
جمعه 01 دی 1396, 19:34 عصر
الان مشکل حل شد؟