Сколько раз для каждого сотрудника они были рекомендованы для дискреционного повышения? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть две таблицы: одна называется tblPerformanceReview, а другая - tblEmployee. Я пытаюсь выяснить, сколько раз каждый сотрудник был рекомендован для дискреционного повышения. В tblPerformanceReview есть столбец Discretionary, который позволяет узнать, был ли рекомендован сотрудник для повышения. Если бы им порекомендовали, было бы 1, если не было бы 0. Я пытаюсь найти способ подсчитать, сколько раз каждому сотруднику было рекомендовано повышение. Я хотел, чтобы он отображал имя сотрудника и счет того, сколько раз его рекомендовали поднять. Обе таблицы связаны через поле IDEmployee.

Пример кода, который дает мне ошибку

    SELECT tblEmployee.FirstName,COUNT(tblPerformanceReview.Discretionary) 
FROM tblPerformanceReview,tblEmployee INNER JOIN 
tblEmployee 
ON tblPerformance.IDEmployee=tblEmployee.IDEmployee WHERE Discretionary='1' 
group by IDEmployee;

Ответы [ 3 ]

2 голосов
/ 02 марта 2020

Я предполагаю, что tblPerformance действительно должно быть tblPerformanceReview в вашем запросе.

Я полагаю, что вы хотите:

SELECT e.IDEmployee, e.FirstName, 
       COUNT(pr.Discretionary) 
FROM tblEmployee e LEFT JOIN
     tblPerformanceReview pr
     ON pr.IDEmployee = e.IDEmployee AND
        pr.Discretionary = 1
GROUP BY e.IDEmployee, e.FirstName;

Примечания:

  • Использовать псевдонимы таблиц для запроса легче для чтения и записи.
  • Используется LEFT JOIN. Ваш вопрос подразумевает, что вы хотите, чтобы все сотрудники, а не только те, которые имеют по крайней мере один дискреционный рейз.
  • '1' выглядит как число, поэтому я отбросил кавычки. Если столбец действительно содержит строку, сохраните ее.
  • У сотрудников может быть одинаковое имя, поэтому я включил idEmployee в SELECT и GROUP BY.
1 голос
/ 02 марта 2020

попробуйте удалить часть ", tblEmployee" из оператора "FROM tblPerformanceReview, tblEmployee INNER JOIN". Остальная часть вашего запроса выглядит правильно.

1 голос
/ 02 марта 2020

Сделай так:

    SELECT tblEmployee.FirstName,COUNT(*) 
FROM tblPerformanceReview INNER JOIN 
tblEmployee 
ON tblPerformance.IDEmployee=tblEmployee.IDEmployee WHERE Discretionary='1' 
group by tblEmployee.FirstName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...