Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/05/2012, 10:09
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consultas Basicas

Hola elreyes:

Como eres novato en el foro no puedes insertar imágenes ni vínculos, pero puedes subir tus imágenes a cualquier host de imágenes gratuito y poner la URL... no aparecerá como vínculo pero los foristas podrán acceder a la imagen copiando y pegando dicho URL.

La consulta que tienes es muy cercana a lo que creo que debes tener, aunque con algunos detalles.

Primero, puedes utulizar la función SYSDATE para obtener la fecha actual:

Segundo, el segundo parámetro de tu función months_between debe ser la fecha Máxima... tal como lo pones ('factura.fecha') en realidad se trata de una cadena, por lo tanto puede marcar error.

Tercero es conveniente utilizar JOIN's en lugar de hacer las uniones explícitas, es decir, en lugar de poner esto:

Código:
FROM tabla1, tabla2
WHERE tabla1.campo = tabla2.campo
Pon esto:

Código:
FROM tabla1
INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
Aunque el resultado es el mismo desde mi punto de vista, la consulta queda más "limpia" y legible... e incluso puede llegar a ser más rápida (por lo menos en otros motores como SQL Server y MySQL si lo es).

De tal manera que la consulta podría quedar así:

Código SQL:
Ver original
  1. SELECT
  2. MONTHS_BETWEEN(SYSDATE, MAX(factura.fecha)),
  3. MAX(factura.fecha), cliente.cedula, cliente.nombre
  4. FROM cliente
  5. INNER JOIN factura ON factura.cedula=cliente.cedula
  6. GROUP BY cliente.cedula, cliente.nombre;

Haz la prueba y nos comentas, si continuas con problemas, pon algunos datos de ejemplo de tus tablas y con gusto te ayudamos a afinar la consulta. igual con el resto de las que están pendientes.

Saludos
Leo.