Eu tenho as tabelas abaixo. A primeira tem postagens com uma chave estrangeira para uma tabela de categoria. Estou procurando uma consulta que me dê a quantidade de postagens em cada categoria.
A mesa de correio.
select pstOccuId,pstTitle from job_post;
+-----------+-------------------------------------------+
| pstOccuId | pstTitle |
+-----------+-------------------------------------------+
| 1 | Software Engineer Recruit |
| 1 | Web Developer Recruit |
| 7 | Saxophonist |
| 5 | Construction Company looking for plumber. |
+-----------+-------------------------------------------+
A tabela de categorias.
select occuDscr,occuId from occupation_field;
+---------------------+--------+
| occuDscr | occuId |
+---------------------+--------+
| Software Engineer | 1 |
| Economics | 2 |
| Structural Engineer | 3 |
| Legal Advisors | 4 |
| Plumbers | 5 |
| Social Advisors | 6 |
| Musicians | 7 |
+---------------------+--------+
Estou procurando uma consulta que me dê algo assim.
+---------------------+--------+
| occuDscr | amount |
+---------------------+--------+
| Software Engineer | 2 |
| Plumbers | 1 |
| Musicians | 1 |
+---------------------+--------+
Se você deseja exibir categorias com 0 posts, você precisa usar
LEFT JOIN
em vez deINNER
. Além disso, para outros RDMS, exceto o mysql, você precisaGROUP BY a.occuId, a.occuDscr
(o Mysql permite que você tenha apenasGROUP BY a.occuId
ATUALIZAÇÃO por @RolandoMySQLDBA
A saída da consulta de @a1ex07 é semelhante a esta:
Aqui estão seus dados de amostra:
Aqui está o resultado:
Para obter contagens para todas as ocupações, consulte desta forma:
Aqui está esse resultado:
De uma chance !!!
Apenas uma alternativa, você também pode executar a consulta abaixo, traz o mesmo resultado.
SQL Fiddle