Ha devvers, daar ben ik weer
Ik heb de volgende databasestructuur, klikbaar:

Het boolean veld exception kan twee waardes bevatten, namelijk 0 en 1 (of groter). Als een record in de tabel agent_contract bij exception de waarde 0 heeft, houdt dat in dat desbetreffende agent het desbetreffende contract niet heeft. Heeft exception de waarde 1, dan houdt dat in dat desbetreffende agent het desbetreffende contract wel heeft. In beide gevallen geldt dit ongeacht of de agent het contract al wel of niet via een team waar 'ie lid van is heeft.
Nu wil ik graag een lijst hebben van de contracten die een agent heeft, dus contracten via team(s) plus en min de exceptions. Nu is me dit wel gelukt met onderstaande query, maar ik heb zo m'n twijfels omdat de volgorde van het afhandelen van de exceptions die er afgaan en erbij worden opgeteld uitmaakt.
Kan iemand me helpen met het verbeteren van de query en/of uitleggen welke exception ik voorrang moet geven?
Ik heb de volgende databasestructuur, klikbaar:

Het boolean veld exception kan twee waardes bevatten, namelijk 0 en 1 (of groter). Als een record in de tabel agent_contract bij exception de waarde 0 heeft, houdt dat in dat desbetreffende agent het desbetreffende contract niet heeft. Heeft exception de waarde 1, dan houdt dat in dat desbetreffende agent het desbetreffende contract wel heeft. In beide gevallen geldt dit ongeacht of de agent het contract al wel of niet via een team waar 'ie lid van is heeft.
Nu wil ik graag een lijst hebben van de contracten die een agent heeft, dus contracten via team(s) plus en min de exceptions. Nu is me dit wel gelukt met onderstaande query, maar ik heb zo m'n twijfels omdat de volgorde van het afhandelen van de exceptions die er afgaan en erbij worden opgeteld uitmaakt.
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| SELECT contract_id FROM contract_team INNER JOIN agent_team ON contract_team.team_id=agent_team.team_id WHERE agent_id='Agent1' AND contract_id NOT IN ( SELECT contract_id FROM agent_contract WHERE agent_id='Agent1' AND exception=0 ) UNION SELECT contract_id FROM agent_contract WHERE agent_id='Agent1' AND exception=1 |
Kan iemand me helpen met het verbeteren van de query en/of uitleggen welke exception ik voorrang moet geven?