Usé finalmente este modelo:
Como verás, este modelo no requiere (y en realidad es innecesario) un ID autoincremental para la tabla PERMISOS, ya que la nicidad está dada al ser declarada PK con ambos campos.
Una vez cargados los datos, la consulta queda, entonces:
Código MySQL:
Ver originalmysql
> SELECT M.modulo_id
, M.modulo
, U.nombre
-> modulo M
JOIN usuario U
-> (U.usuario_id, M.modulo_id)
+-----------+--------------+--------+
| modulo_id | modulo | nombre |
+-----------+--------------+--------+
| 1 | BODEGA | JUAN |
| 4 | CONTABILIDAD | JUAN |
| 1 | BODEGA | MARIO |
| 2 | MANTENCION | MARIO |
| 3 | SISTEMAS | MARIO |
| 2 | MANTENCION | JOSE |
| 3 | SISTEMAS | JOSE |
| 4 | CONTABILIDAD | JOSE |
| 2 | MANTENCION | CARLOS |
| 3 | SISTEMAS | CARLOS |
| 4 | CONTABILIDAD | CARLOS |
+-----------+--------------+--------+
11 rows
in set (0.00 sec
)
Esos serían los permisos faltantes por usuario.