Ik ben een website aan het met maken met een groep en rechten systeem.
Omdat de mysql versie lager dan 4.1 bleek te zijn dan ik dacht moet ik een aantal queries herschrijven omdat deze subqueries bevat.
De tabellen zien er als volgt uit:
module_action
Veldnaam Type Key
module_tag varchar(240) Ja
module_action_tag varchar(240) Ja
groep_rechten
Veldnaam Type Key
groep_id int(11) Ja
module_tag varchar(240) Ja
action_tag varchar(240) Ja
Dan om alle rechten te krijgen die groep 1 niet had gebruikte ik de volgende querie.
Hierin is `m` `module_action` en `g` `groep_rechten`
Met behulp van de mysql manual kom ik op het volgende uit.
Dan krijg ik alle rechten die groep 1 niet heeft zolang niet zowel groep 1 als een andere groep een recht heeft. Dan krijg ik het bijbehorende recht als nog.
Hopenlijk heeft iemand een oplossing.
p.s. Een mysql upgrade zit er niet direct in.
Omdat de mysql versie lager dan 4.1 bleek te zijn dan ik dacht moet ik een aantal queries herschrijven omdat deze subqueries bevat.
De tabellen zien er als volgt uit:
module_action
Veldnaam Type Key
module_tag varchar(240) Ja
module_action_tag varchar(240) Ja
groep_rechten
Veldnaam Type Key
groep_id int(11) Ja
module_tag varchar(240) Ja
action_tag varchar(240) Ja
Dan om alle rechten te krijgen die groep 1 niet had gebruikte ik de volgende querie.
Hierin is `m` `module_action` en `g` `groep_rechten`
SQL:
1
2
3
4
5
6
7
8
| SELECT `m`.`module_tag` ,`m`.`action_tag` FROM `module_action` WHERE CONCAT(`m`.`module_tag`,`m`.`action_tag`) NOT IN ( SELECT CONCAT(`g`.`module_tag`,`g`.`action_tag`) FROM `groep_rechten` WHERE `g`.`group_id` = '1' ) |
Met behulp van de mysql manual kom ik op het volgende uit.
SQL:
1
2
3
4
5
| SELECT DISTINCT `module_action`.`module_tag` ,`module_action`.`action_tag` FROM `module_action` LEFT JOIN `groep_rechten` ON CONCAT(`module_action`.`module_tag`,`module_action`.`action_tag`)=CONCAT(`groep_rechten`.`module_tag`,`groep_rechten`.`module_action_tag`) WHERE `groep_rechten`.`groep_id` != '1' OR `groep_rechten`.`groep_id` IS NULL |
Dan krijg ik alle rechten die groep 1 niet heeft zolang niet zowel groep 1 als een andere groep een recht heeft. Dan krijg ik het bijbehorende recht als nog.
Hopenlijk heeft iemand een oplossing.
p.s. Een mysql upgrade zit er niet direct in.