ملخص للتصويتات حسب الموضوع، بما في ذلك العلامات

أود الحصول على استعلام مستكشف البيانات لجميع المواضيع في فئة وعدد الأصوات على كل منها. أنا جديد في استعلامات SQL ولم أتمكن من العثور على أي شيء موجود يبدو قريبًا بما يكفي لأقوم بتعديله.

من الناحية المثالية، سيبدو الأمر كالتالي:

الموضوع الأصوات الردود العلامات مغلق
موضوع مثال 1 85 62 ويب، iOS، Android FALSE
موضوع مثال 2 79 45 ويب TRUE

هل يمكن لأحد مساعدتي في هذا؟ أعتذر إذا كان هذا هو المكان الخطأ. بدا وكأنه أقرب موضوع موجود.

إعجاب واحد (1)

أهلاً بكِ @CarrieSeltzer :slight_smile:

هل سيعمل شيء كهذا معك؟

-- [params]
-- int :category_id 

WITH tag_names AS (
    SELECT t.id topic_id,
    string_agg(tags.name, ', ' ORDER BY tags.name) AS "tags"
    FROM topics t
    JOIN topic_tags tt ON tt.topic_id = t.id
    JOIN tags ON tags.id = tt.tag_id
    GROUP BY t.id
)

SELECT t.created_at::date,
       dvtvc.topic_id,
       votes_count,
       t.posts_count,
       tn.tags,
       t.closed
FROM discourse_voting_topic_vote_count dvtvc
JOIN topics t ON t.id = dvtvc.topic_id
LEFT JOIN tag_names tn ON dvtvc.topic_id = tn.topic_id
WHERE t.category_id = :category_id
AND votes_count > 0
ORDER BY t.created_at DESC

إعجاب واحد (1)

نعم، شكراً لك! هذا رائع! أحتاج فقط إلى تعديل بسيط - كيف يمكنني جعله يعرض اسم الموضوع في تصدير csv (وليس فقط معرف الموضوع)؟

إعجاب واحد (1)

أعتقد أن إضافة t.title إلى SELECT يجب أن تتضمن ذلك:

-- [params]
-- int :category_id 

WITH tag_names AS (
    SELECT t.id topic_id,
    string_agg(tags.name, ', ' ORDER BY tags.name) AS "tags"
    FROM topics t
    JOIN topic_tags tt ON tt.topic_id = t.id
    JOIN tags ON tags.id = tt.tag_id
    GROUP BY t.id
)

SELECT t.created_at::date,
       dvtvc.topic_id,
       t.title,
       votes_count,
       t.posts_count,
       tn.tags,
       t.closed
FROM discourse_voting_topic_vote_count dvtvc
JOIN topics t ON t.id = dvtvc.topic_id
LEFT JOIN tag_names tn ON dvtvc.topic_id = tn.topic_id
WHERE t.category_id = :category_id
AND votes_count > 0
ORDER BY t.created_at DESC

هناك أيضًا خيار لتضمين رابط فعال للموضوع في التصدير أيضًا إذا كنت ترغب في ذلك، باستخدام على سبيل المثال:

'https://meta.discourse.org/t/' || t.slug || '/' || t.id AS topic_url,
إعجابَين (2)

أشعر بالسخافة لطرح هذا السؤال، لكنني بصراحة لا أستطيع معرفة أين يمكنني إضافة هذا الجزء في الكود أعلاه. أين سيذهب؟

إعجابَين (2)

لا بأس. :slight_smile: سيتم إدراجه هنا: (فقط قم بتغييره إلى عنوان موقعك الخاص بدلاً من Meta)

-- [params]
-- int :category_id 

WITH tag_names AS (
    SELECT t.id topic_id,
    string_agg(tags.name, ', ' ORDER BY tags.name) AS "tags"
    FROM topics t
    JOIN topic_tags tt ON tt.topic_id = t.id
    JOIN tags ON tags.id = tt.tag_id
    GROUP BY t.id
)

SELECT t.created_at::date,
       dvtvc.topic_id,
       t.title,
       'https://meta.discourse.org/t/' || t.slug || '/' || 
       t.id AS topic_url,
       votes_count,
       t.posts_count,
       tn.tags,
       t.closed
FROM discourse_voting_topic_vote_count dvtvc
JOIN topics t ON t.id = dvtvc.topic_id
LEFT JOIN tag_names tn ON dvtvc.topic_id = tn.topic_id
WHERE t.category_id = :category_id
AND votes_count > 0
ORDER BY t.created_at DESC

إعجابَين (2)