Bonjour
J'ai trois tables :
- utilisateur (id_utilisateur, nom_utilisateur)
- droit (id_droit, nom_droit)
- droit_utilisateur (id_utilisateur, id_droit)
Contenu de la table Utilisateur :
- toto (id 1)
- tutu (id 2)
Contenu de la table Droit :
- Créer une page (id 1)
- Modifier une page (id 2)
- Supprimer une page (id 3)
Contenu de la table droit_utilisateur :
- 1 1
- 1 2
- 2 3
Mon but est d'afficher pour un utilisateur sélectionné, tous les droits avec à coté Oui/Non en fonction de s'il a ou pas ce droit. Donc la pour l'utilisateur 1, ça donnerait ceci :
Donc j'ai essayé de faire une requête externe qui me retournerait ceci pour l'utilisateur 1 :- Créer une page : Oui
- Modifier une page : Oui
- Supprimer une page : Non
Mais ça ne fonctionne pas comme je veux, ça me retourne que les deux droits présents pour cet utilisateur J'aurai fait une requête sans LEFT ça aurait été pareil...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 - "Créer une page" "1" - "Modifier une page" "1" - "Supprimer une page" "NULL"
Voici ma requête :
Si j'essaye avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT D.nom_droit FROM droit D LEFT OUTER JOIN droit_utilisateur DU ON D.id_droit=DU.id_droit where DU.id_utilisateur = 1
Voici ma requête :
=> ça me retourne presque ce que je veux. Il me manque juste le droit 3 qui est assigné à l'utilisateur 2...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT D.nom_droit FROM droit D LEFT OUTER JOIN droit_utilisateur DU ON D.id_droit=DU.id_droit where DU.id_utilisateur = 1 OR DU.id_utilisateur is NULL
Quelqu'un aurait une idée s'il vous plait?
Merci d'avance
Partager