أرغب في أن تتضمن قائمة “المستخدمين_الذين_ردوا_على_موضوع” اسم المستخدم.
لقد حاولت اتباع أسلوب من موضوع آخر، والذي يجعل استعلامات مستكشف البيانات هذه تتضمن معلومات إضافية، لكن لم ينجح الأمر عندما طبقت نفس الصيغة.
إليك الاستعلام الذي أستخدمه حاليًا، والذي يعيد فقط “اسم المستخدم” لأولئك الذين ردوا على موضوع…
-- https://meta.discourse.org/t/68756/8?u=sidv
-- [params]
-- topic_id :topic_id = 536
SELECT u.username
FROM badge_posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
WHERE t.id = :topic_id
GROUP BY p.user_id,u.username
شكرًا لك على المساعدة السريعة في هذا الأمر، جاي! قمت بتحديث الكود إلى ما يلي، وفقًا لاقتراحك:
SELECT u.username, u.name
FROM badge_posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
WHERE t.id = :topic_id
GROUP BY p.user_id,u.username
… ثم حصلت على هذا الخطأ…
PG::GroupingError: ERROR: column "u.name" must appear in the GROUP BY clause or be used in an aggregate function
LINE 12: SELECT u.username, u.name
لذلك قمت بتعديل الاستعلام إلى ما يلي وعمل بسلاسة!
SELECT u.username, u.name
FROM badge_posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
WHERE t.id = :topic_id
GROUP BY p.user_id,u.username,u.name
إذن، من مقتطفي الأصلي، أضفت ما يلي:
إلى سطر “SELECT”: , u.name
إلى سطر “GROUP BY”: ,u.name
شكرًا مرة أخرى، @pfaffman، على مساعدتي في هذا التركيب النحوي!