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

[SOLUCIONADO] 3 select mysql en uno

Estas en el tema de 3 select mysql en uno en el foro de Mysql en Foros del Web. Buenas, Estoy realizando un listado de una sola tabla y va muy lento, porqué hago tres selects a la base de datos para obtener la ...
  #1 (permalink)  
Antiguo 10/02/2018, 17:22
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 547
Antigüedad: 17 años, 10 meses
Puntos: 4
3 select mysql en uno

Buenas,
Estoy realizando un listado de una sola tabla y va muy lento, porqué hago tres selects a la base de datos para obtener la información y listarla en una tabla.

Imaginemos una tabla con los siguientes campos:
- pedido - pieza - cantidad - precio - facturado
1 - 10a - 5 - 3 -01/01/2018
1 - 10b - 3 - 8 -02/01/2018
1 - 10c - 9 - 5 -03/01/2018
1 - 10d - 2 - 6 -
1 - 10e - 1 - 25 -

Y el listado, sería algo así:
PEDIDO: 1; FACTURADO:84; PENDIENTE DE FACTURAR: 37; TOTAL FACTURA: 121
10a - 5 x 3 = 15
10b - 3 x 8 = 24
10c - 9 x 5 = 45
10d - 2 x 6 = 12
10e - 1 x25 = 25

Para obtener el importe facturado ejecuto el siguiente select:
SELECT SUM(cantidad x precio) AS facturado WHERE facturado <> ""

Para obtener el importe pendiente de facturar, sería el siguiente select:
SELECT SUM(cantidad x precio) AS sinfacturar WHERE facturado = ""

El total de la factura es la suma de facturado + sinfacturar

Y finalmente ejecuto un tercer select, para listar la información:
SELECT pedido, cantidad, precio, (cantidad*precio) WHERE facturado <> ""

Mi pregunta es, puedo obtener en un sólo select la información que ahora estoy obteniendo con los tres?

Muchas gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #2 (permalink)  
Antiguo 11/02/2018, 15:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.404
Antigüedad: 13 años, 3 meses
Puntos: 774
Respuesta: 3 select mysql en uno

si se puede, con un case

Código MySQL:
Ver original
  1. case when facturado<>"" then sum(cantidad) end as resultado1,
  2. case when facturado="" then sum(cantidad) end as resultado2
  3. ..
  4. ...
  5. ..
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 12/02/2018, 10:30
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 547
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: 3 select mysql en uno

Vale, muchas gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no

Etiquetas: campo, select, 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 20:32.