Beste allemaal,
Allereerst zal ik de situatie uitleggen:
Ik heb 4 tabellen:
1) login <- Gebruikerstabel
2) locaties <- Locatie van de gebruiker
3) permissies <- Permissie tabel voor verschillende permissies van de gebruiker
4) managed <- Hierin staat welke gebruikers de manager heeft
Zoals je dus ziet in bovenstaande manager met u_id 2 heeft u_id 1 in beheer!
Situatie:
Manager logt in, er wordt een sessie aangemaakt, waarin ook het u_id van die manager staat. Deze wordt in SHA1 hash variable $ses_uid gezet.
Nu wil ik met de volgende query:
Het gevolg is dat alle gebruikers, dus ook de gebruikers die de manager niet in zijn beheer heeft, dubbel weergegeven worden.
Ik weet zeker dat ik een beste fout maak, maar heb geen idee welke. Een groot aantal combinaties in de bovenstaande query (zoals de WHERE eerder in de query enz.) heb ik al geprobeerd, maar helaas.
Iemand enig idee, of hint?
Allereerst zal ik de situatie uitleggen:
Ik heb 4 tabellen:
1) login <- Gebruikerstabel
code:
1
2
3
| |u_id | u_loginnaam | u_voornaam | u_achternaam | | 1 | jaapk | Jaap | Karels | | 2 | manager | Kees | Klaassen | |
2) locaties <- Locatie van de gebruiker
code:
1
2
| |loc_id| loc_naam | loc_plaats | | 1 | Beverly | Amsterdam | |
3) permissies <- Permissie tabel voor verschillende permissies van de gebruiker
code:
1
2
3
| |perm_id | perm_naam| | 1 | Gebruiker| | 2 | Manager | |
4) managed <- Hierin staat welke gebruikers de manager heeft
code:
1
2
| |m_id |m_manager| m_uid | | 1 | 2 | 1 | |
Zoals je dus ziet in bovenstaande manager met u_id 2 heeft u_id 1 in beheer!
Situatie:
Manager logt in, er wordt een sessie aangemaakt, waarin ook het u_id van die manager staat. Deze wordt in SHA1 hash variable $ses_uid gezet.
Nu wil ik met de volgende query:
MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <?php SELECT l.u_loginnaam, l.u_voornaam, l.u_achternaam, p.perm_naam, loc.loc_naam FROM login AS l LEFT JOIN permissies AS p ON l.u_permissie = p.perm_id LEFT JOIN locaties AS loc ON l.u_locatie = loc.loc_id WHERE managed AS m SHA1(m.m_manager) = '".$ses_uid."' ?> |
Het gevolg is dat alle gebruikers, dus ook de gebruikers die de manager niet in zijn beheer heeft, dubbel weergegeven worden.
Ik weet zeker dat ik een beste fout maak, maar heb geen idee welke. Een groot aantal combinaties in de bovenstaande query (zoals de WHERE eerder in de query enz.) heb ik al geprobeerd, maar helaas.
Iemand enig idee, of hint?