Estás invocando una tabla que no usas para nada y que puede estár generando un producto cartesiano sin que lo veas.
Por otro lado, el orden de las tablas tiene que seguir la lógica de las respuestas: Primero la tabla que contenga todos los valores posibles de analizar (usuarios) y luego el resto, de mayor a menor importancia:
Código MySQL:
Ver original CONCAT(u.nombres
,'',u.apellidos
) usuario
, h.nombre,
dsh.fecha,
dsh.fechaEstimadaDevolucion,
es.estado
usuarios u
INNER JOIN detallessolicitudherramientas dsh
ON u.idusuarios
= dsh.idusuarios
INNER JOIN estadossolicitudes es
ON dsh.idestadossolicitudes
= es.idestadossolicitudes
INNER JOIN herramientas h
ON dsh.idherramientas
= h.idherramientas
;
Tip: Trata de acostumbrarte a usar INNER / LEFT / RIGHT JOIN y no la coma. Cuando estableces la relación en el FROM el parser puede optimizar la consulta, pero cuando lo haces en el WHERE no. Eso hace que con la coma, las consultas sean menos eficientes.