Reputation: 61
SELECT * FROM Employee
(
SELECT eid FROM Assignment
GROUP BY eid
HAVING SUM(hours_per_week) > 40
)
This is my code for finding hours_per_week that is over 40. The sub-query returns the eid's of the people with more than 40 hours. My question is how would I display all of the people in Employee with the eid i got from the sub-query. A where? or a join?
Upvotes: 4
Views: 58
Reputation: 35333
Select E.EID, sum(A.hours_per_Week)
FROM employee E
INNER join Assignment A on E.EID = A.EID
Group By E.EID
Having sum(A.Hours_per_week) > 40
Why do you need the subquery?
Upvotes: 0
Reputation: 17560
SELECT e.*
FROM Employee AS e
INNER JOIN
(
SELECT eid
FROM Assignment
GROUP BY eid
HAVING SUM(hours_per_week) > 40
) AS ot ON ot.eid = e.eid
Upvotes: 2
Reputation: 838696
Use WHERE ... IN (SELECT ...)
SELECT col1, col2, ..., coln
FROM Employee
WHERE eid IN
(
SELECT eid FROM Assignment
GROUP BY eid
HAVING SUM(hours_per_week) > 40
)
Upvotes: 6