Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2013
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Unir dos SELECT en una sola consulta

Hola a todos, a ver si me podeis ayudar con esta consulta que en principio parece fácil pero con mi nivel de MySQL no consigo hallarle solución:

Quiero unir estos dos SELECT de "ventas por meses" en una sola consulta, relacionandolas por el campo mes.

Código SQL [-]
SELECT sum(importe) AS ventas_total, year(fecha)*100+month(fecha) AS x_mes FROM ventas GROUP BY year(fecha),month(fecha)

Código SQL [-]
SELECT sum(importe) AS ventas, year(fecha)*100+month(fecha) AS x_mes FROM ventas WHERE vendedor=1 GROUP BY year(fecha),month(fecha)

Es decir, en un mismo TQuery necesito que aparezca la columna de ventas totales por meses y las ventas de un vendedor concreto.

Muchas gracias
Responder Con Cita
  #2  
Antiguo 28-08-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

yo creo que tendrás que hacer dos consultas distintas y mostrarlas juntas en algún componente, no se puede agrupar por dos cosas distintas dentro de la misma consulta.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 28-08-2013
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Si te refieres al GROUP BY tambien lo puedo poner así.

Código SQL [-]
SELECT sum(importe) AS ventas_total, year(fecha)*100+month(fecha) AS x_mes FROM ventas GROUP BY x_mes
Responder Con Cita
  #4  
Antiguo 28-08-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Prueba con esto, en principio debería funcionar.

Código SQL [-]
SELECT
sum(importe) AS ventas_total, , 
sum(case when vendedor=1
             then importe
             else
                  0
      end ) AS VENDEDOR1,
year(fecha)*100+month(fecha) AS x_mes
FROM ventas 
GROUP BY year(fecha),month(fecha)

Nos dices cómo te ha ido. Si te va bien, nos explicas porqué.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #5  
Antiguo 28-08-2013
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Funciona perfectamente, es una solución genial, desconocia totalmente el uso de condicionales en las sentencias SELECT.

Muchisimas gracias.
Responder Con Cita
  #6  
Antiguo 28-08-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Me alegro de que te funcione!!

Jugando con los case when se pueden hacer cosas muy chulas, como por ejemplo hacer querys que te devuelvan los meses en columnas, etc.

Lo bueno es que es el propio motor el que te devuelve la información y se puede mostrar en un dbgrid.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por fjcg02 fecha: 28-08-2013 a las 18:49:13. Razón: Puto corrector del iPad!!
Responder Con Cita
  #7  
Antiguo 28-08-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Y usando UNION ALL puedes lograr el mismo efecto..., consulta tu manual de SQL.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #8  
Antiguo 29-08-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Cita:
Empezado por ElDioni Ver Mensaje
Hola,

yo creo que tendrás que hacer dos consultas distintas y mostrarlas juntas en algún componente, no se puede agrupar por dos cosas distintas dentro de la misma consulta.

Saludos.

__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #9  
Antiguo 29-08-2013
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
[fjcg02]

He probado de hacer la consulta como decias, columnando por meses y agrupando por años y funciona a la perfección,

Cada dia me sorprende más la potencia de SQL.

Gracias por todo.
Responder Con Cita
  #10  
Antiguo 29-08-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
De nada, a mandar...

Hoy voy a echar la siesta contento...

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
unir varias filas en una sola microbiano SQL 4 26-04-2010 18:28:27
Unir varias tablas en una sola maravert SQL 1 04-01-2007 01:42:22
Unir 2 Consultas en una sola hmoner SQL 12 24-05-2006 06:20:42
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
select 1 sola vez dmagui MySQL 3 30-06-2005 13:47:46


La franja horaria es GMT +2. Ahora son las 02:43:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi