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

Ayuda con consulta complicada

Estas en el tema de Ayuda con consulta complicada en el foro de Bases de Datos General en Foros del Web. Hola normalmente con consultas simples salgo adelante pero ahora se me plantea un problema que no resuelvo con mis básicos conocimientos de consultas SQL. Tengo ...
  #1 (permalink)  
Antiguo 13/07/2010, 09:22
 
Fecha de Ingreso: julio-2009
Mensajes: 46
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Ayuda con consulta complicada

Hola normalmente con consultas simples salgo adelante pero ahora se me plantea un problema que no resuelvo con mis básicos conocimientos de consultas SQL.
Tengo dos tablas que contienen los campos:
Tabla exportaciones:
codpais, kgnetos, año

ejemplo:
1 2589 2008
1 85 2008
4 7890 2009
7 790 2010
7 8952 2010
1 28 2009
1 8598 2009

Tabla paises:
codpais, nombrepais

ejemplo:
1 Dinamarca
4 Alemania
7 Uruguay


Necesito obtener el sumatorio de kg por años y paises (con su nombre):

Dinamarca 2008 2674
Dinamarca 2009 8626
...

Supongo que con 1 sola consulta no podrá ser, bueno si son varias igualmente va bien.

Gracias y saludos.
  #2 (permalink)  
Antiguo 13/07/2010, 09:51
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: Ayuda con consulta complicada

No te vayas a creer que es tán difícil en una sola consulta...

Código MySQL:
Ver original
  1. SELECT P.nomPais, E.anno, SUM(E.kgnetos) KgTotal
  2. FROM paises P INNER JOIN exportaciones E ON P.codpais = E.codpais
  3. GROUP BY codpais, anno;

Y si quieres con totalizador:

Código MySQL:
Ver original
  1. SELECT P.nomPais, E.anno, SUM(E.kgnetos) KgTotal
  2. FROM paises P INNER JOIN exportaciones E ON P.codpais = E.codpais
  3. GROUP BY codpais, anno WITH ROLLUP;
En el caso de usar SQL Server, las funciones de ROLLUP pueden ser diferentes.

Tuve que cambiar año por anno porque el resaltador de código no toma bien las eñes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/07/2010 a las 09:57
  #3 (permalink)  
Antiguo 13/07/2010, 09:54
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: Ayuda con consulta complicada

Espero te sirva:

Código SQL:
Ver original
  1. DECLARE @exportaciones TABLE ( codpais INT, kgnetos INT, año INT )
  2. INSERT INTO @exportaciones VALUES( 1, 2589, 2008 )
  3. INSERT INTO @exportaciones VALUES( 1, 85, 2008 )
  4. INSERT INTO @exportaciones VALUES( 4, 7890, 2009 )
  5. INSERT INTO @exportaciones VALUES( 7, 790, 2010 )
  6. INSERT INTO @exportaciones VALUES( 7, 8952, 2010 )
  7. INSERT INTO @exportaciones VALUES( 1, 28, 2009 )
  8. INSERT INTO @exportaciones VALUES( 1, 8598, 2009 )
  9.  
  10. DECLARE @paises TABLE ( codpais INT, nombrepais VARCHAR(50) )
  11. INSERT INTO @paises VALUES( 1, 'Dinamarca' )
  12. INSERT INTO @paises VALUES( 4, 'Alemania' )
  13. INSERT INTO @paises VALUES( 7, 'Uruguay' )
  14.  
  15. SELECT  p.nombrepais, e.año, SUM( e.kgnetos )
  16. FROM    @paises p INNER JOIN @exportaciones e
  17. ON  p.codpais = e.codpais
  18. GROUP BY p.nombrepais, e.año
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #4 (permalink)  
Antiguo 13/07/2010, 10:09
 
Fecha de Ingreso: julio-2009
Mensajes: 46
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda con consulta complicada

Hola gracias por responder, no me funciona, quizás porque lo hago via ODBC a un AS400 antiguo.

Código:
SELECT "PD00"."PDNOML", "DE00"."DEFEAA", SUM("DE00"."DEKGNT")
FROM "S651017C"."ABF"."PD00" AS "PD00"
INNER JOIN "S651017C"."ABF"."DE00" AS "DE00"
ON "PD00"."PDCPAI" = "DE00"."DECPAD"
GROUP BY "PD00"."PDCPAI", "DE00"."DEFEAA"
Devuelve el error: "La expresión de la lista Select no es válida"
  #5 (permalink)  
Antiguo 13/07/2010, 10:18
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: Ayuda con consulta complicada

Empecemos desde el principio:
Dato fundamental que hay que poner siempre que se pregunta: ¿Qué DBMS estás usando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 13/07/2010, 10:28
 
Fecha de Ingreso: julio-2009
Mensajes: 46
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda con consulta complicada

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Empecemos desde el principio:
Dato fundamental que hay que poner siempre que se pregunta: ¿Qué DBMS estás usando?
Uso un conector ODBC a iSeries (AS400) mediante Open Office.
Saludos.
  #7 (permalink)  
Antiguo 13/07/2010, 11:03
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: Ayuda con consulta complicada

iSeries es una línea de servidores de IBM.
Yo te estoy preguntando por el DBMS (DataBase Management System), el motor de bases de datos.
¿Usas DB2 u otro diferente?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bases-de-datos
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 11:06.