Esto es lo que has posteado:
Código sql:
Ver originalSELECT
*,
IFNULL((temp.total*temp.porcentaje/100),0) AS cant_descuento,
(temp.total - IFNULL((temp.total*temp.porcentaje/100),0)) AS importe
FROM
(SELECT
recibos_a.id_reciboa,
recibos_a.id_clinica,
recibos_a.folio,
recibos_a.activo,
clinicas.prefijo,
UNIX_TIMESTAMP(recibos_a.fecha) AS fecha,
pacientes.nombre_paciente,
pacientes.apellidos_paci ente,
operadores.nombre_operador,
operadores.apellidos AS apellidos_operador,
materias.nombre_materia,
recibos_a.id_usuario,
descuentos.nombre_descuento,
recibos_a.porcentaje,
usuarios.nombre_usuario,
(SELECT
SUM(detallado_a.cantidad * detallado_a.precio_unitario) AS suma
FROM detallado_a
GROUP BY detallado_a.id_reciboa
HAVING detallado_a.id_reciboa = recibos_a.id_reciboa)AS total
FROM recibos_a LEFT JOIN usuarios ON recibos_a.autorizo = usuarios.id_usuario
INNER JOIN clinicas ON recibos_a.id_clinica = clinicas.id_clinica
INNER JOIN pacientes ON recibos_a.id_paciente = pacientes.id_paciente
INNER JOIN operadores ON recibos_a.id_operador = operadores.id_operador
INNER JOIN materias ON recibos_a.id_materia = materias.id_materia
LEFT JOIN descuentos ON recibos_a.id_descuento = descuentos.id_descuento) AS temp
WHERE fecha > 1236751200 AND fecha < 1236834000 AND id_clinica = 1 AND id_usuario = 10;
A primera vista tiene tres problemas:
1) el campo
pacientes.apellidos_paci ente tiene un espacio intermedio entre la i y la e. Eso pued ecausar problemas.
2) El FROM exterior no está cerrado y como tabla derivada, no tiene el alias que le corresponde.
3) Un problema final que yo puedo prever es que existen demasiados INNER JOIN y LEFT JOIN definidos para la misma subconsulta. Eso puede tornarla ineficiente. Deberías estudiar si puedes hacer grupos de subconsultas que luego se relacionen. De esa forma vas depurando por niveles de selectividad y no cruzando todo con todo, sino lo que realmente se relaciona.
Puede mejorar la performance de la consulta...