Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Помогите составить запрос


Автор: WolfMax 7.3.2008, 16:12
Дана база данных:
СОТРУДНИК (СОТР-ИМЯ, СОТР_ГОРОД)
НАЗНАЧЕНИЕ (ИМЯ-ПРОЕКТА, СОТР-ИМЯ, СПЕЦИАЛЬНОСТЬ,  ЧАСЫ)
ПРОЕКТ (ИМЯ-ПРОЕКТА, СМЕТА, ПРОЕКТ_ГОРОД)

Сформулируйте следующий запрос на SQL: перечислить сотрудников, участвовавших в каждом проекте.

Спасибо!

Автор: Rodman 7.3.2008, 16:26
Код

SELECT ПРОЕКТ.[ИМЯ-ПРОЕКТА], СОТРУДНИК.[СОТР-ИМЯ]
FROM СОТРУДНИК INNER JOIN (ПРОЕКТ INNER JOIN НАЗНАЧЕНИЕ ON ПРОЕКТ.КодПроекта = НАЗНАЧЕНИЕ.[ИМЯ-ПРОЕКТА]) ON СОТРУДНИК.КодСотрудника = НАЗНАЧЕНИЕ.[СОТР-ИМЯ];

Автор: WolfMax 7.3.2008, 16:39
Цитата(Rodman @ 7.3.2008,  16:26)
Код

SELECT ПРОЕКТ.[ИМЯ-ПРОЕКТА], СОТРУДНИК.[СОТР-ИМЯ]
FROM СОТРУДНИК INNER JOIN (ПРОЕКТ INNER JOIN НАЗНАЧЕНИЕ ON ПРОЕКТ.КодПроекта = НАЗНАЧЕНИЕ.[ИМЯ-ПРОЕКТА]) ON СОТРУДНИК.КодСотрудника = НАЗНАЧЕНИЕ.[СОТР-ИМЯ];

Этот запрос выводит всех сотрудников, и имя проекта в которых они учавствуют, а мне же нужно вывести имена тех сотрудников, которые участвуют во всех проектах.

Автор: WolfMax 7.3.2008, 17:12
Вот самостоятельно нашёл решение
Код

SELECT СОТР_ИМЯ FROM НАЗНАЧЕНИЕ
GROUP BY СОТР_ИМЯ
HAVING  COUNT(ИМЯ_ПРОЕКТА) =  (SELECT COUNT (ИМЯ_ПРОЕКТА) FROM ПРОЕКТ);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)