Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2009, 05:51   #1
Valeno
 
Аватар для Valeno
 
Регистрация: 13.07.2009
Сообщений: 4
По умолчанию Возможно ли так составить SQL вопрос?

Добрый день.

Есть две таблицы:
Project:
id_project
...

Workers
id_worker
id_project
...

Помогите составить SQL запрос так, чтобы он выводил ID-проектов и кол-во исполнителей на нем.
Кол-во исполнителей, в данном случае, считается так:

Код:SELECT COUNTid_project FROM Workers
Valeno вне форума Ответить с цитированием
Старый 14.07.2009, 08:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

На скорую руку в Акцессе набрал пример по минимуму:
Код:
SELECT Project.id_project, Count(Workers.id_worker) AS [Count-id_worker]
FROM Project INNER JOIN Workers ON Project.id_project = Workers.id_project
GROUP BY Project.id_project;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2009, 12:54   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Valeno, обратите внимание, что там, где Вы в чужой теме задали вопрос, я тоже ответил...

переношу ответ сюда:
_______________________ перенос ответа _______________________

Valeno, Вы совершаете грубейшее нарушение правил - вставляете свой вопрос в другую (да ещё и чужую) тему. В правилах чётко сказано - "один вопрос — одна тема"!

2) ладно, спишем это на неопытность (всё таки первое сообщение).
Если Вам нужно количество исполнителей,
то это будет так:
Код:
select count(*), id_project from Workers group by id_project
если же, нужно ещё получить какие-то данные проекта,
то нужно привязать таблицу с данными проекта:
Код:
select count(*) as CountWorkers, id_project, Project.Name 
  from Workers, Project 
  where Workers.id_project = Project.id_project 
  group by id_project, Project.Name
и ещё замечание, если считать (исходя из названия таблицы), что данные по рабочему находятся в таблице Workers, то структура данных у Вас организована не очень хорошо: тогда один исполнитель не сможет участвовать в двух и более проектах. В таких случаях нужна связь многие-ко-многим, что организуется через промежуточную таблицу (в Вашем случае это будет таблица УчастиеИсполнителейВПроектах WorkerForProject, например)

____________________________ окончание переноса _________________________

Последний раз редактировалось Serge_Bliznykov; 14.07.2009 в 14:22. Причина: убрал замечание про название темы...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли так составить SQL вопрос? Mixasik SQL, базы данных 25 15.07.2009 20:15
SQL подзапрос без сравнения, возможно ? DS75 БД в Delphi 7 03.06.2009 12:32
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
проблему возможно решить с помощью хранимой процедуры на SQL? yulia БД в Delphi 8 24.05.2007 20:25