Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 November 20

DB

Daniil Berdnikov in SqlCom.ru - Стиль жизни SQL
Gabriel
Нужно вывести поле которое принимает разные значения в других полях. Как мне задать в запросе это самое 'разное значение'?
Очень расплывчатая формулировка, пример в студию
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Секунду.
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Вот таблица:
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Вот так выглядит мой запрос:
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
SELECT EmpNo FROM Participation WHERE Participation.Role = 'Руководитель проекта' OR Participation.Role = 'Заместитель руководителя проекта'
INTERSECT
SELECT EmpNo FROM Participation WHERE Participation.Role = 'Разработчик' OR Participation.Role = 'Заместитель руководителя проекта';
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Выводит:
23
988
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Но не должен выводить 988. Почему он выводит?
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Проще говоря, нужно вывести сотрудников, участвующих в одном проекте в разных ролях.
источник

DB

Daniil Berdnikov in SqlCom.ru - Стиль жизни SQL
Во-первых, делай алиасы
Ну очень сложно читать
источник

DB

Daniil Berdnikov in SqlCom.ru - Стиль жизни SQL
Во-вторых, у тебя роль какая у 988?
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Daniil Berdnikov
Во-вторых, у тебя роль какая у 988?
Заместитель.
источник

DB

Daniil Berdnikov in SqlCom.ru - Стиль жизни SQL
Заместитель руководителя проекта
Через intersect ты пересечения выводишь
Он у тебя и в первый запрос попадёт, и во второй
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Окей.
источник

DB

Daniil Berdnikov in SqlCom.ru - Стиль жизни SQL
Честно говоря, не особо понимаю даже, зачем тебе тут intersect, но это уже детали, которые я не знаю
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Как мне решить проблему?
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Gabriel
Проще говоря, нужно вывести сотрудников, участвующих в одном проекте в разных ролях.
.
источник

DB

Daniil Berdnikov in SqlCom.ru - Стиль жизни SQL
Я бы сделал проще
Считаешь число ролей по агрегатам проект + сотрудник, выводишь строки, где число  > 1
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Как посчитать по агрегатам?
источник

G

Gabriel in SqlCom.ru - Стиль жизни SQL
Ну, не до конца понимаю, как можно посчитать по роли и сотруднику.
источник