Сколько раз внешний ключ используется в другой таблице?

Предположим, что есть 2 таблицы(просто для примера привожу).
1 таблица - prof
2 таблица - per

CREATE TABLE  prof (
    id_prof    int(4)  NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name  varchar(40)
   )

CREATE TABLE  per (
    id_per    int(2) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name    varchar(40), 
    id_prof int(4) FOREIGN KEY
   ) 

Т.е. есть таблица с профессиями(prof) и с сотрудниками(per), в таблице с сотрудниками есть внешний ключ по которому мы задаем профессию
Как сделать такой запрос чтобы можно было вывести все данные из таблицы с профессиями(prof) + новый столбец, где напротив каждой записи профессии будет количество сотрудников с данной профессией(т.е сколько раз внешний ключ использовался в таблице per).
Например, если в таблице 10 сотрудников из них 4 программиста и 6 администраторов, то после запроса выйдет таблица
1 | программист | 4
2 | администратор | 6
Заранее спасибо за ответ!!


Ответы (1 шт):

Автор решения: Alex R.

Для этого существуют групповые функции.

select
  prof.id_prof,
  prof.name,
  count(*) cnt    
from prof,
     per
where per.id_prof = prof.id_prof
group by prof.id_prof, prof.name

Здесь много похожих вопросов-ответов и с примерами и с пояснениями.

→ Ссылка