Hola danj:
Puedes utilizar la función NOT EXISTS O la función NOT IN para filtrar la información. En lo particular prefiero la primer opción, pues es mucho más versatil que utilizar una función IN. Sería más o menos así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.17 sec)
Query OK, 2 rows affected (0.07 sec)
+-----------+--------------+
| idUsuario | nombre |
+-----------+--------------+
| 1 | Juan David |
| 2 | otro usuario |
+-----------+--------------+
Query OK, 0 rows affected (0.11 sec)
-> (3, 'usuario'), (4, 'tintos');
Query OK, 4 rows affected (0.13 sec)
+-------+-------------+
| idRol | descripcion |
+-------+-------------+
| 1 | super admin |
| 2 | admin |
| 3 | usuario |
| 4 | tintos |
+-------+-------------+
Query OK, 0 rows affected (0.17 sec)
Query OK, 3 rows affected (0.06 sec)
+------+-----------+-------+
| idUR | idUsuario | idRol |
+------+-----------+-------+
| 1 | 1 | 2 |
| 2 | 1 | 4 |
| 3 | 2 | 1 |
+------+-----------+-------+
mysql> #para mostrar los roles que no han sido asignados al usuario 1
-> where ur.idRol
= r.idRol
and ur.idUsuario
= 1); +-------+-------------+
| idRol | descripcion |
+-------+-------------+
| 1 | super admin |
| 3 | usuario |
+-------+-------------+
mysql> #para mostrar los roles que no han sido asignados al usuario 2
-> where ur.idRol
= r.idRol
and ur.idUsuario
= 2); +-------+-------------+
| idRol | descripcion |
+-------+-------------+
| 2 | admin |
| 3 | usuario |
| 4 | tintos |
+-------+-------------+
mysql> #Mismo resultado que el anterior pero utilizando NOT IN
-> where ur.idUsuario
= 2); +-------+-------------+
| idRol | descripcion |
+-------+-------------+
| 2 | admin |
| 3 | usuario |
| 4 | tintos |
+-------+-------------+
Finalmente también podrías hacer un LEFT JOIN y filtrar aquellos registros que te regresen NULL, más o menos así
Código MySQL:
Ver original+-------+-------------+
| idRol | descripcion |
+-------+-------------+
| 2 | admin |
| 3 | usuario |
| 4 | tintos |
+-------+-------------+
Dale un vistazo al script para ver si te puede servir.
Saludos
Leo.