24 CONSULTAS CON TABLAS RELACIONADAS INNER JOIN en el Sistema de Ventas con (PHPyMySql) FullStack

Duraci贸n: 20 min
M贸dulo: 馃懁 CRUD de Usuarios y Roles (Seguridad L贸gica) Lecci贸n 16 de 17

Descripci贸n

Lecci贸n 24: Consultas con Tablas Relacionadas (INNER JOIN) 馃

Esta lecci贸n es fundamental y se centra en c贸mo utilizar la cl谩usula INNER JOIN de SQL para combinar la informaci贸n de la tabla usuarios y la tabla roles en una sola consulta. El objetivo es mostrar el nombre del rol en lugar de solo su ID en las vistas del sistema.

1. 鈿欙笍 Construcci贸n de la Consulta INNER JOIN

Para obtener el nombre del rol junto a los datos del usuario, se debe crear una consulta m谩s compleja:

SentenciaProp贸sitoDetalle
SELECTDefine qu茅 campos se mostrar谩n.Se seleccionan campos espec铆ficos (id_usuario, nombres, email) y se selecciona el campo nombre_rol de la otra tabla, d谩ndole el alias rol [05:30].
FROM... ASSelecciona la tabla principal.FROM usuarios AS us (Se le da un alias corto a la tabla usuarios para referenciar sus campos f谩cilmente) [02:11].
INNER JOINCombina las tablas.INNER JOIN roles AS rol (Se une con la tabla roles) [02:28].
ONDefine la condici贸n de enlace.ON us.id_rol = rol.id_rol (La clave for谩nea del usuario se iguala a la clave primaria del rol) [02:48].

Resultado: La consulta final proporciona una fila de datos que incluye los campos del usuario y el nombre del rol (vendedor, administrador, etc.) en una 煤nica operaci贸n [06:02].

2. 馃摑 Aplicaci贸n en Vistas de Usuarios

La nueva consulta se aplica a todas las vistas de usuarios que deben mostrar el nombre del rol.

a. Listado de Usuarios (index.php)

 

  1. Actualizaci贸n del Controlador: La consulta SELECT * FROM usuarios en el controlador listado_usuarios.php es reemplazada por la nueva sentencia INNER JOIN [06:49].
  2. Vista de Tabla: Se a帽ade una nueva columna llamada "Rol del Usuario" a la tabla de la vista (index.php) [07:25].
  3. Mostrar Rol: Dentro del ciclo foreach que genera la tabla, se imprime el valor del rol con la nueva clave obtenida: <?php echo $user_data['rol']; ?> [07:55].

b. Creaci贸n de Usuario (create.php)

  1. Inclusi贸n de Roles: Se incluye el controlador listado_roles.php dentro de la vista de creaci贸n para obtener todos los roles disponibles [11:08].
  2. Input <SELECT>: Se reemplaza el antiguo campo de rol por un elemento <SELECT> que hereda estilos de Bootstrap [09:31].
  3. Llenado Din谩mico: Se usa un ciclo foreach en PHP para llenar el <SELECT> con elementos <option> por cada rol en la base de datos [11:38].
    • Valor (value): El atributo value del <option> se establece como el id_rol (el valor que se guardar谩 en la tabla usuarios) [13:57].
    • Texto Visible: El texto visible del <option> es el nombre_rol.
  4. Actualizaci贸n del Controlador de Creaci贸n: El controlador create.php del m贸dulo Usuarios se actualiza para recibir y almacenar el id_rol en la base de datos, enlazando correctamente el nuevo usuario a un rol [14:25].

c. Detalle de Usuario (show.php)

  1. Consulta Detallada: El controlador de la vista de detalle (show.php) se actualiza con la consulta INNER JOIN [17:48].
  2. Filtro: Se a帽ade la condici贸n WHERE para filtrar por el ID del usuario espec铆fico que se est谩 visualizando [18:26].
  3. Visualizaci贸n: Se a帽ade un nuevo campo en la vista para mostrar el rol del usuario [18:46]