Hallo allemaal,

Ik schaar mezelf nog steeds onder beginners hoewel eea wel duidelijker gaat worden. Nu wil ik vervolgstap zien te maken maar ik staar me blind om gevens uit twee tabellen met elkaar te vergelijken.

De stituatie is:

Er bestaat een administratie waarin personen rbac geautoriseerd worden volgens het principe Medewerker->Rol->Activiteit-Autorisatie. Dit noemen we de Soll. Daarnaast bestaat er applicatie waarbinnen gebruikers worden geautoriseerd voor bepaalde rechten. Dit noemen we de Ist.

De praktijk is:
Personen stromen in, door en weer uit. Mensen zijn dus in beweging en daardoor veranderd ook de behoefte aan autorisaties.


De wens is:
Periodiek een controle uitvoeren over users met hun rechten (ist) nog steeds overeenkomen met de administratie (soll). Daarvoor importeer ik mbv 3-tal ist-bestanden (autorisatie, user2autorisatie en users) in eigen tabellen.

Maar vanaf dit punt wordt het lastiger... deze bestanden moeten met elkaar vergeleken worden en daar waar verschillen onstaan moet dit zichbaar gaan worden. Wanneer iemand volgens de administratie een autorisatie heeft maar in werkelijkheid niet op het systeem hebben we te maken met een soll-verschil. Heeft iemand een autorisatie binnen de applicatie wel maar niet via de administratie dan hebben we een ist-verschil (mogelijk risico?).

Nu dacht ik de UNION of UNION ALL statement te gebruiken. Zie hieronder. Ik heb een tool FlySpeed SQL Query gebruikt maar die zet all gegevens onder elkaar terwijl voor het gemak de Soll (S) en Ist (I) juist naast elkaar worden getoond en zodoende eenvoudig gegroepeerd overzicht krijg..

De code die ik in elkaar heb geflanst is:


global $connection;

			$where = NULL;
			if (isset($_GET['doelsysteem'])){
				$where = 'WHERE MSKEYVALUE_DOELSYSTEEM = "'.mysqli_real_escape_string($connection, $_GET['doelsysteem']).'"';
			}
		
		$sqlUitlezen = mysqli_query($connection, "Select
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU As S_OU,
			bigpicture.idm_ou.Z_ORG_DN As S_organisatie,
			Count(bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE) As soll
		From
			bigpicture.idm_autorisatie
			Left Join bigpicture.idm_act2aut On bigpicture.idm_act2aut.MSKEYVALUE_AUTORISATIE = bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE
			Left Join bigpicture.idm_activiteit On bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_act2aut.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role2act On bigpicture.idm_role2act.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role On bigpicture.idm_role.MSKEYVALUE_ROL = bigpicture.idm_role2act.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person2role On bigpicture.idm_person2role.MSKEYVALUE_ROL = bigpicture.idm_role.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person On bigpicture.idm_person.MSKEYVALUE_MEDEWERKER = bigpicture.idm_person2role.MSKEYVALUE_MEDEWERKER
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
		
		".$where." 
		
		Group By
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
		
		Union All
		
		Select
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU As I_OU,
			bigpicture.idm_ou.Z_ORG_DN As I_organisatie,
			Count(bigpicture.ist_aut_swift_productie_cea.Autorisatienaam) As ist
		From
			bigpicture.ist_aut_swift_productie_cea
			Left Join bigpicture.ist_user2aut_swift_productie_cea On bigpicture.ist_user2aut_swift_productie_cea.Autorisatie_naam = bigpicture.ist_aut_swift_productie_cea.Autorisatienaam
			Left Join bigpicture.ist_user_swift_productie_cea On bigpicture.ist_user_swift_productie_cea.gebruikersnaam = bigpicture.ist_user2aut_swift_productie_cea.gebruikersnaam
			Left Join bigpicture.idm_person On bigpicture.idm_person.ACHMEA_EMPLOYEENUMBER = bigpicture.ist_user_swift_productie_cea.Personeelsnummer
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
		Group By
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
		Order By
			MSKEYVALUE_DOELSYSTEEM Desc,
			S_OU
			
			");


maar helaas is niet erg bruikbaar op deze manier.. iemand een idee? of kan me in een goede richten manoevreren?
Heel beniewd en ik waaardeer nu al jullie tomeloze inzet en voor het meedenken..

[size=xsmall]Toevoeging op 29/11/2020 16:40:22:[/size]

Een andere methode is dat ik heb geprobeerd om 2 select statements apart te definieren. Helaas geeft dat ook niet gewenste restultaat... ik draai maar rondjes en weet niet goed hoe ik dit nu moet aanpakken.



<?php

//------------------------------------------------------------------------ FUNCTIE Soll/Ist vergelijking op systeemniveau
	function soll_ist_systeem_swift_productie_cea(){
		global $connection;

			$where = NULL;
			if (isset($_GET['doelsysteem'])){
				$where = 'WHERE MSKEYVALUE_DOELSYSTEEM = "'.mysqli_real_escape_string($connection, $_GET['doelsysteem']).'"';
			}
		
		$sqlUitlezenSoll = mysqli_query($connection, "Select
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU As S_OU,
			bigpicture.idm_ou.Z_ORG_DN As S_organisatie,
			Count(bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE) As soll
		From
			bigpicture.idm_autorisatie
			Left Join bigpicture.idm_act2aut On bigpicture.idm_act2aut.MSKEYVALUE_AUTORISATIE = bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE
			Left Join bigpicture.idm_activiteit On bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_act2aut.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role2act On bigpicture.idm_role2act.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role On bigpicture.idm_role.MSKEYVALUE_ROL = bigpicture.idm_role2act.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person2role On bigpicture.idm_person2role.MSKEYVALUE_ROL = bigpicture.idm_role.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person On bigpicture.idm_person.MSKEYVALUE_MEDEWERKER = bigpicture.idm_person2role.MSKEYVALUE_MEDEWERKER
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
			
		".$where." 
		
		Group By
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
		Order By
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM Desc,
			S_OU
		");
		
		
		$sqlUitlezenIst = mysqli_query($connection, "Select
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU As I_OU,
			bigpicture.idm_ou.Z_ORG_DN As I_organisatie,
			Count(bigpicture.ist_aut_swift_productie_cea.Autorisatienaam) As ist
		From
			bigpicture.ist_aut_swift_productie_cea
			Left Join bigpicture.ist_user2aut_swift_productie_cea On bigpicture.ist_user2aut_swift_productie_cea.Autorisatie_naam = bigpicture.ist_aut_swift_productie_cea.Autorisatienaam
			Left Join bigpicture.ist_user_swift_productie_cea On bigpicture.ist_user_swift_productie_cea.gebruikersnaam = bigpicture.ist_user2aut_swift_productie_cea.gebruikersnaam
			Left Join bigpicture.idm_person On bigpicture.idm_person.ACHMEA_EMPLOYEENUMBER = bigpicture.ist_user_swift_productie_cea.Personeelsnummer
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
		Group By
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
			
		");
		
		$sqlAantalSoll = mysqli_num_rows($sqlUitlezenSoll);
				
		echo '<table id="idmdata">';
		echo '<tr>';
		echo '<th colspan="5">Audit: Soll/IST systeemrapport voor '.strtoupper($_GET['doelsysteem']).'</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th>Soll</th>';
		echo '<th>Ist</th>';
		echo '<th align="center">S</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th><font size="-1">OU code</th>';
		echo '<th><font size="-1">Afdeling</th>';
		echo '<th><font size="-1"></th>';
		echo '</tr>';

		if ($sqlAantalSoll > 0){
			while ($sqlDataSoll = mysqli_fetch_assoc($sqlUitlezenSoll)){		
				echo '<tr>';		
				echo '<td><font size="-2">'.$sqlDataSoll['S_OU'].'</td>';
				echo '<td><font size="-2">'.$sqlDataSoll['S_organisatie'].'</td>';
				echo '<td><font size="-2">'.$sqlDataSoll['soll'].'</td>';
				echo '</tr>';
			}
			echo '</table>';
			echo '<br />';

		echo '<button class="button1" style="vertical-align:middle"><span><div id="button"><a href="javascript:javascript:history.go(-1)">&nbsp;&nbsp;Vorige pagina</a></div></span></button>';	
		}
		
		$sqlAantalIst = mysqli_num_rows($sqlUitlezenIst);
				
		echo '<table id="idmdata">';
		echo '<tr>';
		echo '<th colspan="5">Audit: Soll/IST systeemrapport voor '.strtoupper($_GET['doelsysteem']).'</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th>Soll</th>';
		echo '<th>Ist</th>';
		echo '<th align="center">I</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th><font size="-1">OU code</th>';
		echo '<th><font size="-1">Afdeling</th>';
		echo '<th><font size="-1"></th>';
		echo '</tr>';

		if ($sqlAantalIst > 0){
			while ($sqlDataIst = mysqli_fetch_assoc($sqlUitlezenIst)){		
				echo '<tr>';		
				echo '<td><font size="-2">'.$sqlDataIst['I_OU'].'</td>';
				echo '<td><font size="-2">'.$sqlDataIst['I_organisatie'].'</td>';
				echo '<td><font size="-2">'.$sqlDataIst['ist'].'</td>';
				echo '</tr>';
			}
			echo '</table>';
			echo '<br />';	
		
		echo '<button class="button1" style="vertical-align:middle"><span><div id="button"><a href="javascript:javascript:history.go(-1)">&nbsp;&nbsp;Vorige pagina</a></div></span></button>';	
		}
		
		else{
			echo '<center><a href="javascript:javascript:history.go(-1)"><img src="../img/no-data.png"></a></center>';
		}
		
		
	}

?>
Wat is nu de volledige foutmelding?
- Ariën - op 05/12/2020 21:53:08

Wat is nu de volledige foutmelding?


Het lijkt er op dat ik de unknown colums (3x) het weten te tacklen. Bij het aanroepen van deze functie komt er nu (vooralsnog) geen foutmelding naar voren... maar uhm, d'r komt ook niet anders naar voren. De brouwser blijf maar laden..... na zo'n 10 minuten nog steeds niets leesbaars op scherm... zit dus ergens nog niet iets jofiaals

[size=xsmall]Toevoeging op 05/12/2020 22:21:43:[/size]

- DHU - op 05/12/2020 22:12:10

[quote="- Ariën - op 05/12/2020 21:53:08"]
Wat is nu de volledige foutmelding?


Het lijkt er op dat ik de unknown colums (3x) het weten te tacklen. Bij het aanroepen van deze functie komt er nu (vooralsnog) geen foutmelding naar voren... maar uhm, d'r komt ook niet anders naar voren. De brouwser blijf maar laden..... na zo'n 10 minuten nog steeds niets leesbaars op scherm... zit dus ergens nog niet iets jofiaals
[/quote]


Uiteindelijk na 15 minuten de boel maar geforceerd onderbroken en de webserver services maar opnieuw herstart. De code toch maar weer induiken ben ik bang :-)
Het helpt niet als ik nog eens wijs om het te proberen met een FULL OUTER JOIN? Scheelt werk volgens mij.

Overigens is die SELECT DISTINCT een indicatie dat je naar de indices wilt kijken, tenzij performance geen issue is.
Ad Fundum op 07/12/2020 13:32:26

Het helpt niet als ik nog eens wijs om het te proberen met een FULL OUTER JOIN? Scheelt werk volgens mij.

Overigens is die SELECT DISTINCT een indicatie dat je naar de indices wilt kijken, tenzij performance geen issue is.




[size=xsmall]Toevoeging op 07/12/2020 16:45:35:[/size]

[quote="Ad Fundum op 07/12/2020 13:32:26"]
Het helpt niet als ik nog eens wijs om het te proberen met een FULL OUTER JOIN? Scheelt werk volgens mij.

Overigens is die SELECT DISTINCT een indicatie dat je naar de indices wilt kijken, tenzij performance geen issue is.
[/quotr]

Waarom zou dat net helpen? alle opties staan toch open... maar dit stukje raakt ook behoorlijk de technische inzicht.. dat gaat niet zo super hard.. en overal moet ik op inlezen.. maar aanbod is zo hoog dat je als 'leek' je ook altijd moet afvragen is de info die ik lees de juiste... en officiele php site gaat behoorljk de techniek in..

voor mijn vraag wil ik ook wel vergoeding tegenover zetten wanneer deze in verhouding ligt... maar daar wil wel een een 'vacature' voor plaatsn...
Je bent vrij om een vacature te plaatsen in het vacatureforum. Lees wel a.u.b. de criteria.
- DHU - op 07/12/2020 16:42:00

Waarom zou dat net helpen? alle opties staan toch open... maar dit stukje raakt ook behoorlijk de technische inzicht.. dat gaat niet zo super hard.. en overal moet ik op inlezen.. maar aanbod is zo hoog dat je als 'leek' je ook altijd moet afvragen is de info die ik lees de juiste... en officiele php site gaat behoorljk de techniek in..

Het is niet zo zeer een php ding (tenzij je een oneindige loop hebt) maar een SQL.
Ik had de subqueries erin gezet om duidelijk te maken wat er gebeurt maar deze zijn over het algemeen niet bevorderlijk voor de performance.

Aangepast:

SELECT
    idm_person.REF_OU,
    COUNT(DISTINCT idm_person2role.MSKEYVALUE_MEDEWERKER) soll,
    COUNT(DISTINCT ist_user2aut_swift_productie_cea.gebruikersnaam) ist
FROM
    idm_autorisatie
INNER JOIN
    idm_act2aut ON idm_act2aut.MSKEYVALUE_AUTORISATIE = idm_autorisatie.MSKEYVALUE_AUTORISATIE
INNER JOIN
    idm_role2act ON idm_role2act.MSKEYVALUE_ACTIVITEIT = idm_act2aut.MSKEYVALUE_ACTIVITEIT
INNER JOIN
    idm_person2role ON idm_person2role.MSKEYVALUE_ROL = idm_role2act.MSKEYVALUE_ROL
RIGHT JOIN
    idm_person ON idm_person.MSKEYVALUE_MEDEWERKER = idm_person2role.MSKEYVALUE_MEDEWERKER
        AND idm_autorisatie.MSKEYVALUE_DOELSYSTEEM = 'waarde van $_GET'
LEFT JOIN
    ist_user2aut_swift_productie_cea ON  idm_person.ACCOUNTNAME = ist_user2aut_swift_productie_cea.gebruikersnaam
GROUP BY
    idm_person.REF_OU

Ik heb tabel- en kolomnamen overgenomen uit jouw tweede reactie.

Hoi Ger,

Wederom is mijn dank groot voor het aandragen van de code... maar ook blijf de browser maar pollen en komt er geen resultaat op scherm. Ik wil je bedanken maar ik zet het voor nu allemaal maar even in de ijskast. Ik snap gewoon niet wat er gaande is en het is voor mij niet te volgen. Het is verdomd lastig als je hier geen cursus in hebt gevolgd of dat je van niemand tekst en uitleg krijgt. Ik zou je inzet wel willen belonen voor de inspanning maar laten we die dan even buiten hier houden. Je hebt er nu al zoveel tijd ingestoken. Neem aub even contact op voor afstemming.

Dank je wel en de rest natuurlijk ook voor het meedenken.

[size=xsmall]Toevoeging op 08/12/2020 22:07:42:[/size]

Hoi Ger,

Wederom is mijn dank groot voor het aandragen van de code... maar ook blijf de browser maar pollen en komt er geen resultaat op scherm. Ik wil je bedanken maar ik zet het voor nu allemaal maar even in de ijskast. Ik snap gewoon niet wat er gaande is en het is voor mij niet te volgen. Het is verdomd lastig als je hier geen cursus in hebt gevolgd of dat je van niemand tekst en uitleg krijgt. Ik zou je inzet wel willen belonen voor de inspanning maar laten we die dan even buiten hier houden. Je hebt er nu al zoveel tijd ingestoken. Neem aub even contact op voor afstemming.

Dank je wel en de rest natuurlijk ook voor het meedenken.
Je hebt gelijk dat SQL lastig kan zijn.

Voor wanneer je het weer op wilt pakken: in SQL is alles een tabel, zoals de output van een SELECT-statement. Je kunt die output direct hergebruiken in een ander SELECT-statement.

Met een UNION plak je de output van twee tabellen onder elkaar, maar dat is niet wat je wilt.
Wat je wilt is dat de resultaten naast elkaar vergeleken worden.

Dat kan je doen met een JOIN bij het FROM-statement:
- een INNER JOIN geeft alle rijen die in beide sets voorkomen
- een LEFT JOIN (of omgekeerd: RIGHT JOIN) geeft alle rijen die in de ene set voorkomen, en eventueel die van de andere
- een (FULL) OUTER JOIN geeft rijen die in de ene en/of andere set voorkomen

Als je vanuit een SQL-client werkt (HeidiSQL, TOra, ...) kan je een al een SELECT-statement schrijven die alle resultaten geeft die je nodig hebt, via een FULL OUTER JOIN. En later stop je die werkende query in PHP, voor het mooi presenteren in HTML.

Het gaat dus om SQL.
Om te beginnen schrijf je twee werkende SELECT-queries voor de twee systemen (IST en SOLL), waaruit alle data komt die je wilt vergelijken of wilt laten zien in het rapport.
Vervolgens zet je de output van die twee queries in een FULL OUTER JOIN voor de vergelijking.
Je gebruikt mysqli_*() dus je database zal zijn in MySQL of MariaDB, die allebei geen FULL OUTER JOIN ondersteunen.
Maar het kan met een omweg. Bijvoorbeeld:

WITH `ist` AS (
  SELECT  -- van de IST-omgeving
),
`soll` AS (
  SELECT  -- van de SOLL-omgeving
)
SELECT *
FROM `ist`
  LEFT JOIN `soll`
    ON `ist`.`id` = `soll`.`id`
UNION SELECT *
FROM `ist`
  RIGHT JOIN `soll`
    ON `ist`.`id` = `soll`.`id`
WHERE `ist`.`id` IS NULL;


Details: https://dev.mysql.com/doc/refman/8.0/en/outer-join-simplification.html
Thxn 4 the input en voor het meedenken. Geldt voor iedereen die met me meedenkt. Ben hier eens voorzicht mee aan het experimenteren geweest maar ik loop tegen een performance (?) issue aan denk ik die ik eerst moet zien te tacklen.

Om de soll-positie te kunnen vaststellen dien ik gebruik te maken van een autorisatietabel met liefst 5 inner joins om te kunnen bepalen door wie en waar deze in gebruik zijn. De route is: activiteit->act2aut->role2act-person2role->person->ou.
Met name de laatste inner join wordt als niet plezierig ervaren want dan kom ik niet tot resutlaat. Al ik de OU-tabel niet gebruik dan is no issue, maar tja ik heb die laatste tabel net nodig voor aanvullende info wat daar in staat.
Na zo'n 10 minuten pollen forceer ik dan maar weer 'n herstart van mijn wampserver. Kan dit ook bijv ook liggen aan Wampserver of is die conclusie te voorbarig?

[size=xsmall]Toevoeging op 12/12/2020 10:04:56:[/size]

Thxn 4 the input en voor het meedenken. Geldt voor iedereen die met me meedenkt. Ben hier eens voorzicht mee aan het experimenteren geweest maar ik loop tegen een performance (?) issue aan denk ik die ik eerst moet zien te tacklen.

Om de soll-positie te kunnen vaststellen dien ik gebruik te maken van een autorisatietabel met liefst 5 inner joins om te kunnen bepalen door wie en waar deze in gebruik zijn. De route is: activiteit->act2aut->role2act-person2role->person->ou.
Met name de laatste inner join wordt als niet plezierig ervaren want dan kom ik niet tot resutlaat. Al ik de OU-tabel niet gebruik dan is no issue, maar tja ik heb die laatste tabel net nodig voor aanvullende info wat daar in staat.
Na zo'n 10 minuten pollen forceer ik dan maar weer 'n herstart van mijn wampserver. Kan dit ook bijv ook liggen aan Wampserver of is die conclusie te voorbarig?
- DHU - op 08/12/2020 21:40:42

Wederom is mijn dank groot voor het aandragen van de code... maar ook blijf de browser maar pollen en komt er geen resultaat op scherm.

- DHU - op 12/12/2020 09:57:51

Met name de laatste inner join wordt als niet plezierig ervaren want dan kom ik niet tot resutlaat. Al ik de OU-tabel niet gebruik dan is no issue, maar tja ik heb die laatste tabel net nodig voor aanvullende info wat daar in staat.

Die tabel stond ook niet in het voorbeeld wat ik gaf, heb je die zelf alsnog toegevoegd?
Want als die de veroorzaker is van het perfomance probleem:

SELECT x.*, idm_ou.Z_ORG_DN 
FROM
    (SELECT
        idm_person.REF_OU,
        COUNT(DISTINCT idm_person2role.MSKEYVALUE_MEDEWERKER) soll,
        COUNT(DISTINCT ist_user2aut_swift_productie_cea.gebruikersnaam) ist
    FROM
        idm_autorisatie
    INNER JOIN
        idm_act2aut ON idm_act2aut.MSKEYVALUE_AUTORISATIE = idm_autorisatie.MSKEYVALUE_AUTORISATIE
    INNER JOIN
        idm_role2act ON idm_role2act.MSKEYVALUE_ACTIVITEIT = idm_act2aut.MSKEYVALUE_ACTIVITEIT
    INNER JOIN
        idm_person2role ON idm_person2role.MSKEYVALUE_ROL = idm_role2act.MSKEYVALUE_ROL
    RIGHT JOIN
        idm_person ON idm_person.MSKEYVALUE_MEDEWERKER = idm_person2role.MSKEYVALUE_MEDEWERKER
            AND idm_autorisatie.MSKEYVALUE_DOELSYSTEEM = 'waarde van $_GET'
    LEFT JOIN
        ist_user2aut_swift_productie_cea ON  idm_person.ACCOUNTNAME = ist_user2aut_swift_productie_cea.gebruikersnaam
    GROUP BY
        idm_person.REF_OU) x
INNER JOIN
    idm_ou On idm_ou.MSKEYVALUE_OU = x.REF_OU

Door de OU-tabel uit de group by te halen kan je een hoop winst boeken.

Reageren