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

[SOLUCIONADO] Varios Select en una misma tabla

Estas en el tema de Varios Select en una misma tabla en el foro de Mysql en Foros del Web. hola a todos, gracias de antemano por la ayuda. Tengo una tabla donde se almacenan la cantidad de ventas de un vendedor con la siguiente ...
  #1 (permalink)  
Antiguo 18/12/2014, 18:28
 
Fecha de Ingreso: mayo-2014
Ubicación: Medellin
Mensajes: 12
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta Varios Select en una misma tabla

hola a todos, gracias de antemano por la ayuda.

Tengo una tabla donde se almacenan la cantidad de ventas de un vendedor con la siguiente estructura

cedula_vendedor, cantidad_ventas, mes_ventas

necesito un query mysql donde me muestre un resultado de la siguiente manera:

cedula_vendedor ventas_diciembre, ventas_noviembre, diferencia_ventas

muchas gracias por su ayuda.

PD: la diferencia de ventas si se como hacerla y traer el mes de diciembre en la segunda columna tambien, el problema está en cargar los datos de noviembre en la tercer columna, ya que son de la misma la tabla.

la tabla actual esta de la siguiente manera


Código HTML:
+--------+-----------------+------------+
| cedula | cantidad_ventas | mes_ventas |
+--------+-----------------+------------+
|     1  |       450       | diciembre  |
|     1  |       320       | noviembre  |
|     1  |       180       | octubre    |
|     2  |       100       | diciembre  |
|     2  |       200       | noviembre  |
|     2  |       300       | octubre    |
|     3  |       150       | diciembre  |
|     3  |       350       | noviembre  |
|     3  |       550       | octubre    |
+--------+-----------------+------------+

 Y lo que necesito es que la consulta me arroje un resultado de la siguiente manera:

+--------+------------------+------------------+------------+
| cedula | ventas_diciembre | ventas_noviembre | diferencia |
+--------+------------------+------------------+------------+
|     1  |       450        |       320        |     130    |
|     2  |       100        |       200        |    -100    |
|     3  |       150        |       350        |    -200    |
+--------+------------------+------------------+------------+

Última edición por andresalvarez; 18/12/2014 a las 18:57
  #2 (permalink)  
Antiguo 18/12/2014, 21:42
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Varios Select en una misma tabla

no estoy seguro que lo que solicitas se pueda realizar así( por medio de Vistas u otro) sin embargo te recomiendo que consultes las clausulas BEETWEN, IN y el operador OR para realizar tu consulta ya que podrias filtrar por el mes ambos valores(Nov y Dic) y Ordernarlo con ORDER BY ASC|DESC...

espero haberte ayudado saludos
  #3 (permalink)  
Antiguo 18/12/2014, 21:49
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Varios Select en una misma tabla

bueno consegui un POST que te puede servir http://www.forosdelweb.com/f86/ayuda-dividir-columna-varias-856447/
  #4 (permalink)  
Antiguo 19/12/2014, 06:51
 
Fecha de Ingreso: mayo-2014
Ubicación: Medellin
Mensajes: 12
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Varios Select en una misma tabla

Cita:
Iniciado por NelsonJPG Ver Mensaje
bueno consegui un POST que te puede servir http://www.forosdelweb.com/f86/ayuda-dividir-columna-varias-856447/
Hola gracias por responder. En realidad lo que busco no es seperar las columnas para poder visualizar, sino mas bien como un if en las columnas, donde me pregunte si el mes es igual a diciembre o no. De todos modos gracias por la información, esto me ayudo a despejar un poco la mente.

Saludos
  #5 (permalink)  
Antiguo 19/12/2014, 06:52
 
Fecha de Ingreso: mayo-2014
Ubicación: Medellin
Mensajes: 12
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Varios Select en una misma tabla

Cita:
Iniciado por NelsonJPG Ver Mensaje
no estoy seguro que lo que solicitas se pueda realizar así( por medio de Vistas u otro) sin embargo te recomiendo que consultes las clausulas BEETWEN, IN y el operador OR para realizar tu consulta ya que podrias filtrar por el mes ambos valores(Nov y Dic) y Ordernarlo con ORDER BY ASC|DESC...

espero haberte ayudado saludos
Muchas gracias por tu respuesta, voy a tratar de realizarlo con un if en cada columna preguntando si es igual al mes. Les cuento como me va.

Saludos
  #6 (permalink)  
Antiguo 19/12/2014, 09:10
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Varios Select en una misma tabla

Una opción puede ser como te muestro en el siguiente SQL Fiddle.

Cualquier duda, pregúntame.
  #7 (permalink)  
Antiguo 19/12/2014, 10:34
 
Fecha de Ingreso: mayo-2014
Ubicación: Medellin
Mensajes: 12
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Varios Select en una misma tabla

Hola wchiquito, gracias por tu ayuda es justamente lo que estaba buscando, ahora estoy investigando un poco para entender el código pero funciona a las mil maravillas.

PD: yo habia creado este query que muestro abajo, cual crees que sea mas optimo para ejecutar? el que mandaste o este que tengo.

Saludos y gracias nuevamente.


Código MySQL:
Ver original
  1. select cedula, sum(if(mes_ventas='DICIEMBRE',cant_ventas,0))As Mes_Actual,
  2. sum(if(mes_ventas='Noviembre',cant_ventas,0))As Mes_Anterior
  3.  from registro_ventas group by cedula

Última edición por gnzsoloyo; 19/12/2014 a las 10:51
  #8 (permalink)  
Antiguo 19/12/2014, 11:21
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Varios Select en una misma tabla

Pregunta complicada de responder a priori, depende muchos factores. En principio con pocos datos es poco probable que se noten problemas de performance en cualquiera de las dos (2) consultas, pero, a medida que la cantidad de registros en la tabla aumente, es cuando se deberán iniciar las estrategias de optimización.

Aprovecho este menaje para agregar la consulta del SQL Fiddle.

Código SQL:
Ver original
  1. SET @`ven_a` := 'diciembre',
  2.     @`ven_b` := 'noviembre';
  3.  
  4. SET @`des_a` := CONCAT('ventas_', @`ven_a`),
  5.     @`des_b` := CONCAT('ventas_', @`ven_b`);
  6.  
  7. SET @`qry` := CONCAT('SELECT
  8.  `der`.`cedula`,
  9.  `der`.`ventas_a` `', @`des_a`, '`,
  10.  `der`.`ventas_b` `', @`des_b`, '`,
  11.  (`der`.`ventas_a` - `der`.`ventas_b`) `diferencia`
  12. FROM
  13. (
  14.  SELECT
  15.    `ven_a`.`cedula`,
  16.    `ven_a`.`cantidad_ventas` `ventas_a`,
  17.    `ven_b`.`cantidad_ventas` `ventas_b`
  18.  FROM `ventas` `ven_a`
  19.    INNER JOIN `ventas` `ven_b` ON `ven_a`.`cedula` = `ven_b`. `cedula` AND `ven_b`.`mes_ventas` = \'', @`ven_b`, '\'
  20.  WHERE `ven_a`.`mes_ventas` = \'', @`ven_a`, '\'
  21. ) `der`;');
  22.  
  23. PREPARE `stmt` FROM @`qry`;
  24. EXECUTE `stmt`;
  25. DEALLOCATE PREPARE `stmt`;
  #9 (permalink)  
Antiguo 19/12/2014, 22:05
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Varios Select en una misma tabla

Bueno lo importante es que se soluciono, ademas no comprendi muy bien el contexto =) jeje sin embargo creo q aprendimos ambos

Etiquetas: select, sql, tabla
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.