Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7182783
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T17:50:37+00:00 2026-05-28T17:50:37+00:00

An article has 1 or many comments. How would I get only the articles

  • 0

An article has 1 or many comments. How would I get only the articles with 0 comments?

This would be easier with a counter cache. However, I need to do this without using a counter cache.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T17:50:39+00:00Added an answer on May 28, 2026 at 5:50 pm
    class Article < ActiveRecord::Base
      has_many :comments
    
      scope :without_comments,
             joins(<<-SQL
                   LEFT OUTER JOIN
                     (SELECT article_id
                      FROM comments GROUP BY article_id) AS rolled_up_comments
                   ON comments.article_id = articles.id
             SQL
             ).
             where("rolled_up_comments.article_id" => nil)
    end
    

    Use like this:

    Article.without_comments.all
    

    This could easily be adapted to return articles with a specific number or range of comments, e.g.:

    class Article < ActiveRecord::Base
      has_many :comments
    
      scope :with_comment_count,
             joins(<<-SQL
                   LEFT OUTER JOIN
                     (SELECT article_id, COUNT(*) AS comment_count
                      FROM comments GROUP BY article_id) AS rolled_up_comments
                   ON comments.article_id = articles.id
             SQL
             )
      scope :with_n_comments, lambda {
               with_comment_count.
               where(:"rolled_up_comments.comment_count" => n)
             }
    end 
    

    In the latter case, n can be a specific number, like 100, or a range like 1..10 which ActiveRecord will turn into a BETWEEN query returning articles with 1 through 10 comments.

    Note that in the 0-comment case, the count is NULL, so you can’t use the range query for that.

    I’ve tested this in Postgres. I don’t know if it’ll work in MySQL. I’m not sure how/if MySQL handles sub-selects for joins.

    Edit: The solution pointed out by a previous commenter is easier, if you only need to know articles without comments. For count ranges, the above will work.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Simple task: given that an article has many comments, be able to display in
An article has many articles that it refers to and many other articles can
I have a Model called Section which has many articles ( Article ). These
So I have two tables, article and comments (which has one-to-many relationship (1 article
I have a list of articles, and each article has its own title and
I read in this article that a company has created a software capable of
I've found an article on this subject by a Microsoft employee, but has anyone
So I'm building a blog engine which has /articles/then-the-article-permalink as it's URL structure. I
i have a website which contains many news articles. IN the database, each article
How can I roll my own counter cache for a self-referential many-to-many relationship that

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.