PDA

View Full Version : نمایش دسته بندی های مطالب با رایطه many to many



silencer
شنبه 27 اردیبهشت 1393, 12:06 عصر
سلام، فرض کنید یک قسمت ایجاد مطلب داریم توی سایت که هر مطلب میتونه چند دسته بندی داشته باشه، یعنی یک رابطه many to many بین جداول مطلب و دسته بندی ،
برای حل این مشکل اومدم بک جدول دیگه تعریف کردم برای شکستن رابطه به یک به چند و چند به یک ،که تا فیلد داره content_id و category_id که هر دو primary key هستن.

جدول category:
id,name,parent_id

جدول content:
id,title,body,..

جدول con_cat
content_id,category_id


حالا میخوام وقتی به قسمت مدیریت مطالب رفتم 10 مطلب اخر با نام دسته بندی ها نمایش داده بشه، که مشکل منم همینه؟؟ چون به ازای هر id در جدول content ممکنه چند category_id داشته باشیم در جدول con_cat و بعدش تازه باید نام هر دسته بندی از جدول category استخراج بشه.

چه جور query باید بنویسم؟ یا یک راه حل بهتر؟

من از propel 1.7 استفاده میکنم توی لایه model اگه دستور اونم بدید که عالیه(البته اینو درست میکنم خودم ،اگر نوع query دستم بیاد.)

desatir7316
شنبه 27 اردیبهشت 1393, 12:40 عصر
جرا از جدول con_cat میگیری؟
از جدول content بگیر 10 تای آخر رو، بعد از طریق ارتباط ها می تونی اسم category رو از جداول دیگه استخراج کنی

aalmair
شنبه 27 اردیبهشت 1393, 13:01 عصر
select content.* from content
left join con_cat on content.content_id = con_cat.content_id
left join category on con_cat.category_id = category.category_id
where category.name='my cat'
limit 10

silencer
شنبه 27 اردیبهشت 1393, 13:54 عصر
جرا از جدول con_cat میگیری؟
از جدول content بگیر 10 تای آخر رو، بعد از طریق ارتباط ها می تونی اسم category رو از جداول دیگه استخراج کنی

بالا ذکرکردم رابطه هام چند به چند هست ،اگر یک به چند بود حرف شما درست بود

silencer
شنبه 27 اردیبهشت 1393, 13:59 عصر
select content.* from content
left join con_cat on content.content_id = con_cat.content_id
left join category on con_cat.category_id = category.category_id
where category.name='my cat'
limit 10


دستور شما رو قبلا نوشته بودم که یک مشکل داره اونم اینکه اگر توی جدول con_cat برای یک مطلب 2 که رکورد درج شده باشه اون موقع دو بار رکورد اون مطلب برگردونده میشه که رکورد اولی با عنوان دسته بندی اول و رکورد دوم با عنوان دسته بندی دوم، و اگر اون مطلب توی 5 دسته باشه 5 بار برای اون مطلب رکورد برگردونده میشه.

MMSHFE
شنبه 27 اردیبهشت 1393, 17:01 عصر
از ترکیب LEFT OUTER JOIN و GROUP_CONCAT استفاده کنید.