Cita: Será que estoy formulado mal la consulta sql.
No necesariamente, pero tiene todo el aspecto d eun problema de datos.
hay dos condiciones en tu query, y para ponerla limpia usando INNER JOIN en lugar de JOIN implícito. Te recomiendo que los evites.
Código MySQL:
Ver original C.cedula,
C.fecha_inicial,
C.nombre,
C.apellido1,
C.apellido2,
C.telefono,
C.valor_credito,
C.tasa_interes,
C.valor_interes,
C.total_pagar,
F.estado,
F.abono_interes,
F.mes
AND C.fecha_inicial
BETWEEN '".$fecha_inicial."' AND '".$fecha_final."'
En primer lugar: ¿Realmente estás almacenando en la columna "estado" una cadena de texto que dice eso? No parece una condicion muy práctica, ya que es suceptible a errores, si ese dato se almacena manualmente... ¿Lo consideraste?
Por otro lado, la fecha, ese BETWEEN sólo funcionará si la columna es un DATE o DATETIME (nunca un VARCHAR), y además la fecha está en un formato "AAAA-MM-DD"
¿Eso se cumple?
Para ver si realmente anda por alli la cosa sería mejor que hicieras una prueba manual de este tipo:
1. Verificar si la query base devuelve datos:
Código MySQL:
Ver original C.cedula,
C.fecha_inicial,
C.nombre,
C.apellido1,
C.apellido2,
C.telefono,
C.valor_credito,
C.tasa_interes,
C.valor_interes,
C.total_pagar,
F.estado,
F.abono_interes,
F.mes
2. Verificar si hay registros con estado buscado:
Código MySQL:
Ver original C.cedula,
C.fecha_inicial,
C.nombre,
C.apellido1,
C.apellido2,
C.telefono,
C.valor_credito,
C.tasa_interes,
C.valor_interes,
C.total_pagar,
F.estado,
F.abono_interes,
F.mes
3. Buscar si hay registros en un rango, pero hacerlo
sin uso de variables:
Código MySQL:
Ver original C.cedula,
C.fecha_inicial,
C.nombre,
C.apellido1,
C.apellido2,
C.telefono,
C.valor_credito,
C.tasa_interes,
C.valor_interes,
C.total_pagar,
F.estado,
F.abono_interes,
F.mes
Comentanos qué devuelve cada una.