En fait ce n'est pas ce que je dois récupérer je vais essayer d'être plus clair :
En gros j'ai différentes identité pour chaque utilisateur donc comme dans mon exemple une 1 : ADMIN une 2 : COMPTA et une 3 : SECRET
je prends pour exemple ta requête :
1 2 3
| SELECT o.id, o.nom, ifnull(oi.lecture,false), ifnull(oi.creation,false), ifnull(oi.modification,false), ifnull(oi.suppression,false)
FROM objet o
LEFT OUTER JOIN objet_identite oi ON oi.objet_id = o.id AND oi.identite_id = 1 |
Donc dans cette requête le oi.identite_id = 1 veut dire que l'on va faire des modifications de droit sur l'utilisateur qui a une identité ADMIN il faut donc que dans mon tableau j'aie la liste de tous les tuples dans la table objet et les droits rattachés à cet objet pour l'identité ADMIN.
La table objet_identite se construit au fur et à mesure que l'on met des droits en true sinon avant tous les droits n'existent pas.
Donc pour mon exemple il faudrait que cette requête me retourne (par rapport à l'exemple que j'ai donné au début :
LIGNE 1 :
objet.id = 1, objet.nom = toto, objet_identite.lecture = false, objet_identite.ecriture = false, objet_identite.modification = false
LIGNE 2 :
objet.id = 2, objet.nom = titi, objet_identite.lecture = true, objet_identite.ecriture = true, objet_identite.modification = true
LIGNE 3 :
objet.id = 3, objet.nom = tutu, objet_identite.lecture = false, objet_identite.ecriture = false, objet_identite.modification = false
en revanche si je passe sur l'identité COMPTA :
1 2 3
| SELECT o.id, o.nom, ifnull(oi.lecture,false), ifnull(oi.creation,false), ifnull(oi.modification,false), ifnull(oi.suppression,false)
FROM objet o
LEFT OUTER JOIN objet_identite oi ON oi.objet_id = o.id AND oi.identite_id = 2 |
ça doit me retourner :
LIGNE 1 :
objet.id = 1, objet.nom = toto, objet_identite.lecture = false, objet_identite.ecriture = false, objet_identite.modification = false
LIGNE 2 :
objet.id = 2, objet.nom = titi, objet_identite.lecture = false, objet_identite.ecriture = false, objet_identite.modification = false
LIGNE 3 :
objet.id = 3, objet.nom = tutu, objet_identite.lecture = false, objet_identite.ecriture = false, objet_identite.modification = false
car aucun droit pour l’identité COMPTA n'a été affecté.
/** Pas facile d'expliquer dis donc ^^ */
Je vais regarder ta requête de plus près mais il me semble que si je prends l'identité COMPTA ça me retourne aussi :
LIGNE 1 :
objet.id = 1, objet.nom = toto, objet_identite.lecture = false, objet_identite.ecriture = false, objet_identite.modification = false
LIGNE 2 :
objet.id = 2, objet.nom = titi, objet_identite.lecture = true, objet_identite.ecriture = true, objet_identite.modification = true
LIGNE 3 :
objet.id = 3, objet.nom = tutu, objet_identite.lecture = false, objet_identite.ecriture = false, objet_identite.modification = false
Partager