Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Acceder a pk desde dentro de subconsulta

Estas en el tema de Acceder a pk desde dentro de subconsulta en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/11/2012, 05:50
 
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
  #2 (permalink)  
Antiguo 12/11/2012, 06:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Acceder a pk desde dentro de subconsulta

Mi estimado:
No es lo mismo poner esta pregunta en este subforo que ponerla en otra parte. MySQL es un DBMS específico, y como tal existen soluciones que son totalmente inaplicables incluso para ser usadas con ODBC.
Incluso más, te podemos dar soluciones que sirvan en ODBC... pero para el MyODBC, que es un conector propio de MySQL, con lo cual aampoco te serviría. Por ende, no es buena idea.
:Cuando tengas problemas que no sean específicos de MySQL, Oracle o SQL Server, lo que corresponde es que los pongas en base de Datos general, recordando que no debes duplicar los posts en ellos, sino pedir que los muevan, como estoy haciéndolo en este momento con el tuyo.
Por lo demás, no es posible, hasta lo que se, hacer lo que quieres en el cotexto que estás trabajando, porque el ODBC (y dBASE más aún) no tiene recursos para realizarlo. Tan simple como eso.
Si algún conocedor más profundo nos da una solución, mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/11/2012, 06:55
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Acceder a pk desde dentro de subconsulta

Gracias nuevamente por toda la ayuda.

Si, tienes toda la razón (otra vez). Pero estaba tan obcecado conque el problema era mio y de sintaxis que ni me di cuenta.

Es que ni si quiera se me ocurre una solución usando programación. Se me ocurrió usar alguna vista para ver si así podría sacar la info pero creo que ni usa vistas y que el problema sería el mismo. Tendría que hacer una tabla para cada mes. Aún así me serviría supongo, pero creo que no es posible.

Última edición por alyciashape; 12/11/2012 a las 07:00

Etiquetas: join, select, subconsulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:02.