Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/12/2014, 11:21
wchiquito
 
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`;