I have the following table, company_likes
:
Table "public.company_likes" Column | Type | Modifiers ------------+--------------------------------+------------------------ company_id | integer | not null user_id | integer | not null created_at | timestamp(0) without time zone | not null default now() Indexes: "company_likes_pkey" PRIMARY KEY, btree (company_id, user_id) Foreign-key constraints: "company_likes_company_id_foreign" FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE CASCADE "company_likes_user_id_foreign" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
The structure of the companies
table is not important as you can deduce whatever needed for the purpose of this question from the foreign keys details in the \d company_likes
output.
I am trying to fetch the number of likes for a set of companies. I tried the following:
select company_id, count(company_id) as likes_count from company_likes where company_id in (1,2,3,4) group by company_id;
And per this StackOverflow answer, I have also tried this:
select company_id, count(company_id) as likes_count from company_likes left join companies on companies.id = company_likes.company_id where company_id in (1,2,3,4) group by company_id;
However the output in both cases is an empty result. I would have liked something like this
company_id | likes_count ------------+------------- 1 | 0 2 | 0 3 | 0 4 | 0
What query should I use to get a result like this?