У меня есть 3 таблицы: "открытки", "теги" и "картотеки", где теги HABTM карт
Вопрос: Какой запрос выполнить в таблице "теги", чтобы подсчитать количество связанных строк "карт"?
Я ищу что-то вроде этого:
tags.name | count
----------+------
cricket | 15 (15 cards are tagged as 'cricket')
soccer | 23
football | 12
Если вы хотите только те теги, у которых есть хотя бы одна карта:
select tags.name, count(cardstags.tag_id) from tags inner join cardstags on tags.id=cardstags.tag_id group by tags.id;
Чтобы включить теги без карточек, используйте левое соединение вместо внутреннего соединения.
select tags.name, count(*) from tags join cardstags
on tags.id=cardstags.tag_id group by tags.name