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