I have two tables, 1) hashtags table & 2) hashtags_relation table.
The first one lists the hashtags, and the second one relates the hashtag with a post.
TABLE HASHTAGS
id_hashtag | hashtag | 3 #love 4 #monday 5 #yesterday **TABLE HASHTAGS RELATIONS** id_hashtag | id_post | 3 1234 3 1235 3 1236 4 1541 4 1543 5 1720 5 1721 5 1722 5 1723 5 1724
EXPECTED OUTPUT
#yesterday - 5 posts #love - 3 posts #monday - 2 posts
SQL QUERY (MYSQL)
SELECT hs.*, ht.count(*) as count ? FROM hashtags hs LEFT JOIN hashtag_relation hr ON hs.id_hashtag=hr.id_hashtag WHERE 1 ORDER BY (ht.number of posts?) DESC LIMIT 10
PROBLEM
How do I get, the number of posts of each hashtag? I tried using ht.count(*)
Advertisement
Answer
You need to use GROUP BY
:
SELECT hs.hashtag, count(hr.id_hashtag) as cnt FROM hashtags hs LEFT JOIN hashtag_relation hr ON hs.id_hashtag=hr.id_hashtag GROUP BY hs.hashtag ORDER BY cnt DESC LIMIT 10;