Buen dia !
Necesito ayuda para hacer una consulta de varias tablas, el problema es que el inner join que quiero hacer, las tablas consultadas traen el id (llave primaria) de otras tablas. Tengo las siguientes tablas:
MAQUINAS:
id_maquina
nombre
codigo
SERVICIOS:
id_servicio
id_maquina
codigo
numero_servicio
descripcion
TIPO_MANTENIMIENTO:
id_tipo_mantenimiento
tipo_mantenimiento
INFORME MANTENIMIENTO:
id_informe_mantenimiento
id_mantenimiento
fecha
hora_inicio
hora_fin
descripcion
id_usuario
MANTENIMIENTOS:
id_mantenimiento
id_tipo_mantenimiento
id_maquina
id_ servicio
unidad
fecha
estado
A la tabla que le estoy haciendo la consulta es a MANTENIMIENTOS, el c?digo con el cual estoy haciendo la consulta es:
SELECT mantenimientos.id_mantenimiento, maquinas.nombre, tipo_mantenimiento.tipo_mantenimiento, servicios.codigo
FROM (((mantenimientos
INNER JOIN maquinas ON mantenimientos.id_maquina = maquinas.id_maquina)
INNER JOIN tipo_mantenimiento ON mantenimientos.id_tipo_mantenimiento = tipo_mantenimiento.id_tipo_mantenimiento)
INNER JOIN servicios ON mantenimientos.id_servicio = servicios.id_servicio);
al hacer esta misma consulta en la tabla INFORME MANTENIMIENTO solo me retorna los id's, lo que yo quisiera hacer (no se como explicarlo bien) es como un inner join dentro de un inner join, para poder que me retorne los datos de las otras tablas, quisiera obtener los siguientes datos haciendo la consulta a la tabla INFORME MANTENIMIENTO:
nombre de la maquina, el tipo de mantenimiento, el servicio de la maquina. O sea, consultar los datos de las otras tablas que tiene la tabla MANTENIMIENTOS. Es posible hacer eso?
Preferiría una explicación "en lenguaje natural", en vez de en SQL, porque sin ver un diagrama entidad-relación, sólo a partir de los nombres de los campos, puede ser complicado entender lo que buscas. Es decir, en vez de pensar en los JOIN, piensa en la información que quieres obtener...
Hablas de "todos los datos de otras tablas que tiene MANTENIMIENTOS". Para enlazar varias tablas distintas, a mí me parece mucho más natural usar un WHERE que las enlace, en lugar de un INNER JOIN, que se comporta igual pero suele resultar menos legible. La estrucura podría ser tan sencilla como
SELECT *
FROM MANTENIMIENTOS, MAQUINAS, SERVICIOS, TIPO_MANTENIMIENTO
WHERE MAQUINAS.id_maquina = MANTENIMIENTOS.id_maquina
AND SERVICIOS.id_servicio = MANTENIMIENTOS.id_servicio
AND TIPO_MANTENIMIENTO.id_tipo_mantenimiento = MANTENIMIENTOS.id_tipo_mantenimient;
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)