SQL- كيفية استخراج موضوعات المنتدى التي لا تتكرر؟

StackOverflow https://stackoverflow.com/questions/2214058

  •  19-09-2019
  •  | 
  •  

سؤال

في الصفحة الرئيسية لموقع الويب الخاص بي، أريد عرض أحدث المشاركات إلى المنتدى، لكنني لا أريد إظهار نفس الموضوع مرتين. كيف يمكنني تعديل الكود أدناه للقيام بذلك؟

http://punbb.informer.com/wiki/punbb13/integration#recent_10_posts.

عرض أساسا أحدث المشاركات، ولكن مرة واحدة فقط لكل موضوع منتدى / موضوع.

هل كانت مفيدة؟

المحلول

إذا كنت تريد قيمة واحدة فقط لكل موضوع، فيمكنك تجميع حسب الموضوع، ومن كل موضوع حدد آخر مشاركة. ثم، يمكنك اختيار أفضل 10 مواضيع.

سأكتبها في SQL، ويمكنك ترجمة ذلك إلى PHP:

SELECT p.id, p.message, o.subject
FROM
((SELECT t.id
  FROM posts AS p LEFT JOIN topics AS t ON p.topic_id = t.id
  GROUP BY t.id
  HAVING p.posted = MAX(p.posted) ) ids LEFT JOIN topics AS t ON ids.id = t.id) o
                                        LEFT JOIN posts AS p ON o.id = posts.topic_id
ORDER BY p.posted DESC
LIMIT '0,10'

نصائح أخرى

أضف شرطا للحفاظ على السجلات فقط حيث يتم النشر آخر مشاركة في الموضوع:

WHERE p.id = (
  SELECT pp.id 
  FROM posts AS pp
  WHERE pp.topic_id = t.id ORDER BY pp.posted DESC LIMIT 1
)

تغيير هذا السطر

'SELECT'    => 'p.id, p.message, t.subject',

ل

'SELECT DISTINCT'   => 'p.id, p.message, t.subject',
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top