I have three tables:
Users
id Username
---------------------------
1 | John
2 | Mark
Positions
id Position Authority Department
---------------------------------------------------------------
1 | Supervisor | 3 4
2 | Clerk | 4 2
3 | Supervisor | 3 2
4 | Admin | 4 4
5 | Assistant | 5 2
UserPositions
user_id position_id
----------------------------
1 | 1
2 | 3
The tables Users and Positions are related to each other using the UserPositions table, which connects them via the id (a foreign key) of each table.
I'm trying to get results back that include anything greater than or equal to the authority and department a user is assigned to. So far, I was able to work out this query:
SELECT A.Username, B.Position, B.Authority, B.Department FROM UserPositions C
LEFT JOIN Users A on C.user_id = A.Id
LEFT JOIN Positions B on C.position_id = B.Id
Which returns:
Username Position Authority Department
---------------------------------------------------------------
John | Supervisor | 3 | 4
Mark | Supervisor | 3 | 2
However, I want to include positions for that user that are in the same department but also greater than the authority that the user was assigned. For example, John has been assigned the position Supervisor which is in department 4 and authority 3. So I want to return a list of all positions that are in department 4 and have authority of 3 or greater and have it listed next to John. The same for Mark. Like this:
Username Position Authority Department
---------------------------------------------------------------
John | Supervisor | 3 | 4
John | Admin | 4 | 4
Mark | Supervisor | 3 | 2
Mark | Clerk | 4 | 2
Mark | Assistant | 5 | 2
How can I modified my query above to get this result?