Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/08/2008, 19:52
Avatar de gnzsoloyo
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: Sum() y agrupar por tipo

Código:
SELECT 
	SUM(IF(id_tipo_factura=2, total_factura,0) total_pedidos,
	SUM(IF(id_tipo_factura=3, total_factura,0) total_generales,
	SUM(IF(id_tipo_factura=1, total_factura,0) total_emitidas
FROM facturas
WHERE
	YEAR(fecha)=2008;
1. La cláusula AS es innecesaria para crear alias. MySQL asume que el siguiente string a un campo del SELECT o de una tabla, o al paréntesis de cierre de una subconsulta es un ALIAS. El AS era parte del estándar de ANSI-SQL, pero todos los motores lo eliminaron como exigencia desde hace mucho. Ahora es opcional, y se conserva por cuestiones de compatibilidad con servidores viejos que puedan estar corriendo.

2. SI vas a hacer un JOIN entre tablas, asegúrate de determinar los campos de relación entre las tuplas, para que de esa forma no esté operando como un producto cartesiano. Ese era uno de tus problemas (falta de selectividad).

3. Si el campo contiene números, no lo compares con un string sino con otro número, de lo contrario obligas a MySQL a hacer una conversión implícita y eso resiente la performance cuando se trata de grandes cantidades de tuplas (en pocas no lo notarás).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)