Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
ВнизВопрос о вложенном SQL Найти похожие ветки
← →
Duke2 (2002-06-06 06:53) [0]Уважаемые мастера ! Вопрос о вложенном SQL
Есть таблица Должности со всеми видами должностей, Есть таблица Сотрудники
Нужно подсчитать, сколько всего есть сотрудников по каждой должности:
Должность Сотрудников
--------------------------------------------
Директор 1
Кассир 2
Банкир 10 ...
Для этого пишу запрос типа
SELECT Должность,
(SELECT Count(*) FROM Сотрудники WHERE Сотрудники.Должность = Должности.Должность) as Pole
FROM Должности
этот запрос всегда возвращает Pole=0, а если сделать внутренний подзапрос определенным
SELECT Должность,
(SELECT Count(*) FROM Сотрудники WHERE Сотрудники.Должность = "Директор") as Pole
FROM Должности
то правильно подсчитает количество директоров. В чем дело? SQL на это не способен ?
Можно конечно пробежаться по обеим таблицам в цикле, как в старом добром ДОСе,
но хотелось бы узнать как такие проблемы решают крутые чуваки.
Спасибо.
← →
spb (2002-06-06 07:32) [1]Можно обойтись без вложенного запроса:
select ДОЛЖНОСТЬ, count(ДОЛЖНОСТЬ) from СОТРУДНИКИ
group by ДОЛЖНОСТЬ
order by ДОЛЖНОСТЬ
← →
VAleksey (2002-06-06 08:31) [2]order by
не обязательно
← →
spb (2002-06-06 08:37) [3]order by - это бантик для украшения.
← →
VAleksey (2002-06-06 08:53) [4]:)
← →
Johnmen (2002-06-06 09:10) [5]SELECT Должность, Count(*) FROM Должности
JOIN Сотрудники ON Сотрудники.IDдолжности=Должности.ID
GROUP BY Должность
или
SELECT Должность, Count(*) FROM Должности,Сотрудники
WHERE Сотрудники.IDдолжности=Должности.ID
GROUP BY Должность
← →
fool (2002-06-06 10:09) [6]Вроде правильно у тебя, чувак, я тут счас написал (MSSQL) так нормально работает, хотя под dBase, FoxPro, Paradox - не уверен.
select land_name,
(select count(*) from region where land.land_ID=region.land_ID) as "count"
from land
← →
Bcxv/B (2002-06-06 17:43) [7]cc
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c