Как правильно написать запрос

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

Есть две таблицы: 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
Ответить