Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/11/2012, 05:50
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Acceder a pk desde dentro de subconsulta

Siempre tuve en mente que se puede hacer pero no lo tengo claro ahora porque lo necesitaba y no lo logro realizar.

Tenía previamente una consulta que daba el total facturado del año. Simplificando:
Código SQL:
Ver original
  1. SELECT c.id_cliente, SUM(f.precio)
  2. FROM cliente c LEFT JOIN factura f ON c.id_cliente = f.id_cliente
  3. WHERE YEAR(f.fecha)=2012
  4. GROUP BY c.id_cliente

Pero ahora se les dió por pedirme que salga en las columnas también mes a mes, lo que tenía en mente es hacer algo así, pero no se si es válido, al menos así tal cual no lo es.

Sólo voy a poner la columna Enero.
Código SQL:
Ver original
  1. SELECT c.id_cliente, SUM(f.precio), (SELECT SUM(f.precio) FROM factura f2 WHERE f2.id_cliente = c.id_cliente AND MONTH(f2.fecha)=1 AND YEAR(f2.fecha)=2012) AS Enero
  2. FROM cliente c LEFT JOIN factura f ON c.id_cliente = f.id_cliente
  3. WHERE YEAR(f.fecha)=2012
  4. GROUP BY c.id_cliente

¿Es viable hacer eso de alguna forma?
Pensé que se hacía así pero en vista del error que me lanza ya veo que no.


EDIT:
Lo he puesto aquí porque pensé que era exactamente igual pero la base de datos es DBASE y la utilizo a través de un ODBC. Parece que por una limitación no se pueden hacer subquerys en el select, sólo en el WHERE. La solución que encontré es esta:
Código SQL:
Ver original
  1. SELECT table1.FIELD, dummy.COUNT FROM table1, (SELECT COUNT(*) FROM table2) AS dummy (COUNT);
Pero claro, así no puedo comparar las claves de las consultas ni realizar lo que quería.

Si alguien conoce alguna solución se agradece.

Última edición por alyciashape; 12/11/2012 a las 06:29