bonjour,

j'ai un problème avec une requête sql se chargent de récupéré des objets qui son soumis à des lois de sécurité nommer ACL(valeur octal).
le bute est de sélectionner en même temps les objets et de savoir les droits de l'utilisateur courant.
cependant les ACL détermines les droits pour plusieurs groupes et dans le cas ou l'utilisateur courant appartient à 2 groupes (ou plus) dans le cas présent group1 & group2, ayant des acl différents cela génère un obj par acl (normal)

comprennont avec un exemple voici la requet ci-dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
SELECT DISTINCT
	block.id_block,block.nom_block,block.ordre_visu_block,
        entite.id_entite,
        autorisergroup.id_groupe,autorisergroup.acl
FROM block
JOIN
  entite ON block.refentite_block = entite.id_entite
LEFT JOIN
  autorisergroup ON autorisergroup.id_entite = entite.id_entite
WHERE refpage_block = 1 AND(
      autorisergroup.id_groupe = 1 OR
      autorisergroup.id_groupe = 2 
      )
 
ORDER BY block.ordre_visu_block ASC, autorisergroup.acl ASC;
ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
id_block | nom block | order_visy_block | id_entite | id_groupe | acl
10       ;  "block1" ;         1        ;    1    ;     1      ; 8
10       ;  "block1" ;         1        ;    1    ;     2      ;12
11       ;  "block2" ;         2        ;    1    ;     1      ;8
11       ;  "block2" ;         2        ;    1    ;     2      ;12
13       ;  "block3" ;         4        ;    2    ;     1      ;0
il faudrait que je selectionne la plus grand ACL de toutes celle qui on été lister par block pour avoir un résultat de ce genre ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
id_block | nom block | order_visy_block | id_entite | id_groupe | acl
10       ;  "block1" ;         1        ;    1    ;     2      ;12
11       ;  "block2" ;         2        ;    1    ;     2      ;12
13       ;  "block3" ;         4        ;    2    ;     1      ;0
cependant comme les lignes sont différents DISTINCT ne fonctionne pas, il faudrait un distinct qui s’applique à une colonne en particulier genre id_block.
es possible ?