Количество многодетных и бездетных сотрудников

Maria_RU
Дата: 25.12.2011 03:46:05
Пожалуйста, нужен запрос который сосчитает количество многодетных (3 и более детей) и бездетных сотрудников
Есть таблицы сотрудники (Таб_номер, ФИО, Дата_рождения) и таблица дети (Таб_номер_сотрудника, ФИО_ребенка)
зоранее благодарень
Дата: 25.12.2011 10:51:58
Maria_RU
Пожалуйста, нужен запрос который сосчитает количество многодетных (3 и более детей) и бездетных сотрудников
Есть таблицы сотрудники (Таб_номер, ФИО, Дата_рождения) и таблица дети (Таб_номер_сотрудника, ФИО_ребенка)


у вас неверно составлена схема.

"сотрудник", это "персона" состоящая на "должности" в "компании"

уже напрашивается четыре разные сущности, которые хранятся в четырех разных таблицах

табСотрудники:
Код_сотрудника (Уникальный первичный ключ)
Код_персоны (внешний ключ в таблице Персоны)
Код_компании (внешний ключ в таблице Компании)
Код_должности (внешний ключ в таблице Должности)
Дата_приема
Дата_увольнения

табКомпании:
Код_компании (Уникальный первичный ключ)
Код_сотрудника (внешний ключ в таблице Сотрудники)
Название_компании

табДолжности:
Код_должности (Уникальный первичный ключ)
Название_должности
Оклад_должности

ну и самая главная таблица - список контактов или список "люди"

табПерсоны:
Код_персоны (Уникальный первичный ключ)
Имя
Фамилия
Отчество
Пол
Дата_рождения
Место_рождения

таким образом можно описать сотрудников в компаниях на разных должностях.

для того, чтобы описывать детей сотрудников не нужно делать отдельную таблицу, дети это тоже люди, только маленькие :) личные сведения о них можно прекрасно хранить в таблице табПерсоны (также как и сведения о супругах сотрудников)

вот отношения сотрудников и детей (сведения о родстве) можно описать в отдельной таблице,
для упрощения это могла бы быть таблица табДети с полями

табДети:
Код_ребенка (Уникальный первичный ключ)
Код_персоны (внешний ключ в таблице Персоны)
Код_Родителя1 (внешний ключ в таблице Персоны)
Код_родителя2 (внешний ключ в таблице Персоны)
Rivkin Dmitry
Дата: 25.12.2011 10:54:04
Одно из решений:

1-й шаг: выведем список работников с числом детей у каждгого

select [ФИО], (select count(*) from [дети] where [Таб_номер_сотрудника] = [Таб_номер]) as childs
from [сотрудники]


Отсюда уже с легкостью найдем как бездетных, так и многодетных родителей
Maria_RU
Дата: 25.12.2011 12:46:54
Rivkin Dmitry,
если я добавлю еще одну таблицу Многодетные. Выглядит таблица так:
Тип Min Max
С_детьми 1 2
Многодетные 3 25
Бездетные 0 0

как мне тогда количество детей сотрудников связать с таблицей многодетные, чтобы узнать сколько типов сотрудников (многодетные,с_детьми, бездетные)

Написала sql, но что-то не так.

SELECT Многодетные.Тип, count(Сотрудники.Таб_номер) AS cnt
FROM Сотрудники INNER JOIN Многодетные ON (count(*) from [Дети] where Сотрудники.[Таб_номер] = Дети.[Таб_номер])
between Многодетные.Min and Многодетные.Max
GROUP BY Многодетные.Тип;
Rivkin Dmitry
Дата: 25.12.2011 13:12:32
Во-первых, в традициях форума, новенькие девушки показывают свою фотографию...
Во-вторых, зачем же так усложнять себе жизнь?
Вот же в руках запрос - читай таблица, в которой напротив каждого сотрудника стоит количество его детей. Как узнать сколько среди них бездетных? Просто: запросим всех, у кого childs = 0. Подобным образом узнаем у кого есть 1, 2 больше 2, меньше 2.
Чуть сложнее найти все у кого максимум детей. Но тоже, поверь мне, не сверхзадача!
Maria_RU
Дата: 25.12.2011 13:54:45
Rivkin Dmitry,
отдельные запросы у меня получаются. но мне нужен именно "сложный" запрос. чтобы потом на его основе сделать диаграмму.
guest_555123
Дата: 25.12.2011 14:38:21
select c.Таб_номер, count(д.Таб_номер_сотрудника)
from сотрудники as c
left join дети as д on c.Таб_номер = д.Таб_номер_сотрудника
group by c.Таб_номер 

?
Rivkin Dmitry
Дата: 25.12.2011 14:44:48
Maria_RU,
Из простого сделать сложное - всегда успеется!
Какие проблемы с диаграммой? Какие мысли? Я думаю, твой предыдущий топик уже несет в себе часть решения: дополнительная батлича с диапазонами помноженая на наш простейший запрос даст отличный результат, такой же, как фотка в профиле
Rivkin Dmitry
Дата: 25.12.2011 14:49:45
guest_555123,
Бездетные сотрудники не будут показаны в результате
guest_555123
Дата: 25.12.2011 14:54:33
Rivkin Dmitry, почему?