Как присоединиться к четырем таблицам с несколькими ограничениями - PullRequest
0 голосов
/ 24 января 2019

Мне нужно написать оператор SQL, чтобы показать сумму для похожих типов, мне также нужно добавить еще одно исключение из другой таблицы.

Это использует Microsoft Access 2010. Проблема гласит: написать оператор SQL, чтобы показать сумму HoursWorked для каждого типа ВЛАДЕЛЕЦ, но исключить услуги сотрудников, которые имеют ExperienceLevel of Junior, и исключить любой тип с менее чем тремя членами.

 SELECT OWNER.Type, SUM(HoursWorked) AS Total_Work_Hours
FROM OWNER AS O, PROPERTY AS P, SERVICE AS S, EMPLOYEE AS E
WHERE O.OwnerID = P.OwnerID
AND P.Property= S.PropertyID
AND S.EmployeeID=E.EmployeeID
AND O.Type>3;

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Научитесь использовать правильный, явный, стандартный JOIN синтаксис.Вам также необходимо указать правильное значение GROUP BY и указать все ссылки на столбцы:

SELECT o.Type, SUM(HoursWorked) AS Total_Work_Hours
FROM ((OWNER AS O INNER JOIN
       PROPERTY AS P
       ON O.OwnerID = P.OwnerID
      ) INNER JOIN
      SERVICE AS S
      ON P.Property = S.PropertyID
     ) INNER JOIN
     EMPLOYEE AS E
     ON S.EmployeeID = E.EmployeeID
WHERE O.Type > 3 AND
      E.ExperienceLevel <> 'Junior'
GROUP BY o.Type
HAVING COUNT(*) >= 3;
0 голосов
/ 24 января 2019

Вы можете попробовать это.

SELECT O.[Type], SUM(e.HoursWorked) AS Total_Work_Hours,count(e.employeeid) as Total_Members
FROM OWNER AS O, PROPERTY AS P, SERVICE AS S, EMPLOYEE AS E
WHERE O.OwnerID = P.OwnerID
AND P.Property= S.PropertyID
AND S.EmployeeID=E.EmployeeID
AND e.ExperienceLevel NOT IN ('Junior')
Group by o.[Type]
Having count(e.employeeid)>=3;
...