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
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"J'aurai fait une requête sans LEFT ça aurait été pareil...
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