Есть две таблицы: deps - таблица отделов, pers- таблица сотрудников.
Структура deps: id_dep - код отдела,dep - название отдела
Структура pers: fio - фамилия сотрудника, id_dep - код отдела в котором он работает
Содержание deps:
--------------------
| id_dep | dep |
--------------------
| 1 | Цех 1 |
| 2 | Цех 2 |
| 3 | Цех 3 |
| 4 | Цех 4 |
--------------------
Содержание pers:
--------------------
| fio | id_dep|
--------------------
| Жуков | 2 |
| Зверев | 1 |
| Иванов | 1 |
| Курчатов | 1 |
| Львов | 2 |
| Шишкин | 4 |
--------------------
Нужно определить сколько сотрудников работает в каждом отделе.
Пишу запрос:
select deps.dep, count(*)as 'Kolvo'
from deps,pers
where (pers.id_dep=deps.id_dep)
Group By deps.dep
Результат:
----------------
| dep | kolvo|
----------------
|Цех 1 | 3 |
|Цех 2 | 2 |
|Цех 4 | 1 |
----------------
Здесь не выводится строка о Цехе 3.Как с делать так чтобы в этом списке добавлялась строка Цех 3 - 0, ведь Отдел Цех -3 есть, только
в нем нет сотрудников.
Как правильно написать запрос
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Код: Выделить всё
SELECT deps.dep, count(pers.fio) as Kolvo FROM deps LEFT JOIN (pers)
ON (pers.id_dep = deps.id_dep) GROUP BY deps.dep