سلام
من دو تا جدول دارم categories و posts و یه جدول میانی دارم به اسم categorypost
میخوام مقالات مربوط به هر دسته رو لیست کنم و تو سایت نشون بدم مثلا دسته کشاورزی هواشناسی تغذیه و......
تو رابطه چند به چند چطور میتونم نمایششون بدم از چه کوئری باید استفاده کنم
به عنوان مثال تمام بخش های مقاله رو نشون میدم میخوام با استفاده از جدول رابط (pivot) دسته بندی رو هم نشون بدم
میشه راهنمایی کنید چطوری ؟
ممکنه یک خبر سه تا دسته بندی داشته باشه.
برای نمایش مقالات مربوط به هر دسته بهترین روش استفاده از روابط چند به چند در پایگاهداده است، که در اینجا با استفاده از جدول میانی categorypost میتوانید این کار را انجام دهید. برای نمایش دستهها به همراه مقالات مربوط به آنها و اطلاعات مربوط به هر مقاله، میتوانید از یک کوئری JOIN استفاده کنید. البته برای نمایش دقیقتر، اطلاعات جدولهای categories، posts و categorypost لازم است.
فرض کنید جدول categories دارای ستونهای id و name و جدول posts دارای ستونهای id و title باشد. همچنین جدول میانی categorypost دارای ستونهای category_id و post_id باشد که به ترتیب به جداول categories و posts مرتبط هستند.
با توجه به این فرضیات، یک کوئری میتواند به شکل زیر باشد:
SELECT c.name AS category_name, p.title AS post_title
FROM categories c
INNER JOIN categorypost cp ON c.id = cp.category_id
INNER JOIN posts p ON cp.post_id = p.id
ORDER BY c.name, p.title;
این کوئری به شما اطلاعات دستهها و مقالات مربوط به آنها را نمایش میدهد و میتوانید این اطلاعات را در سایت خود نمایش دهید. اگر میخواهید دقیقتر دستهبندی را نشان دهید (مثلاً هر مقاله ممکن است به چند دسته تعلق داشته باشد)، میتوانید با استفاده از GROUP_CONCAT یک ستون جدید برای دستهبندیها ایجاد کنید.
SELECT p.title AS post_title, GROUP_CONCAT(c.name) AS categories
FROM posts p
INNER JOIN categorypost cp ON p.id = cp.post_id
INNER JOIN categories c ON cp.category_id = c.id
GROUP BY p.id;
این کوئری اطلاعات مقالات و دستههای مربوط به آنها را نمایش میدهد و دستههای هر مقاله را به صورت یک رشته جداگانه نشان میدهد. با این اطلاعات میتوانید در سایت خود به زیبایی دستهبندی مقالات را نشان دهید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟