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

Consulta con IF

Estas en el tema de Consulta con IF en el foro de Mysql en Foros del Web. Hola a todos, Tengo un problemilla con una consulta y realmente ya no se si es posible hacer lo que me propongo. Mi intención es ...
  #1 (permalink)  
Antiguo 08/10/2009, 10:40
 
Fecha de Ingreso: agosto-2007
Ubicación: Valencia
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Consulta con IF

Hola a todos,

Tengo un problemilla con una consulta y realmente ya no se si es posible hacer lo que me propongo.

Mi intención es listar productos para una gestión de stock en el listado aparecen el nombre de los diseños previamente filtrados por familias y subfamilias, cada linea devuelta por la consulta debe devolver el nombre del diseño , el umbral que tiene dentro del almacen y la cantidad de productos por talla.

Todas las tablas que utilizado están relacionadas entre sí, ya sea de manera directa o indirecta por lo que creo que si es posible hacerlo.

Hasta ahora he conseguido que me muestre toda la información que quiero, lo que no consigo es que me sume las unidades de cada talla para que se muestren en una sola línea agrupadas por el diseño.

Esta es la consulta que utilizo:

Código sql:
Ver original
  1. SELECT  d.nombre,  IF(p.talla=9,SUM(pa.unidades),0) AS CL,
  2. IF(p.talla=8,SUM(pa.unidades),0) AS CM, IF(p.talla=7,SUM(pa.unidades),0) AS CS,
  3. IF(p.talla=2,SUM(pa.unidades),0) AS L, IF(p.talla=1,SUM(pa.unidades),0) AS M,
  4. IF(p.talla=10,SUM(pa.unidades),0) AS NT, IF(p.talla=3,SUM(pa.unidades),0) AS S,
  5. IF(p.talla=4,SUM(pa.unidades),0) AS XL, pa.umbral FROM disenyos AS d, productos
  6. AS p, productos_almacenes AS pa WHERE p.disenyo=d.id AND pa.producto=p.id
  7. AND p.id IN (SELECT p.id FROM productos AS p, familias AS f, subfamilias AS sf
  8. WHERE p.subfamilia=sf.id AND f.id=sf.familia AND sf.borrado='0' AND f.borrado='0'
  9.  AND p.borrado='0' AND p.subfamilia='209' AND sf.familia='30') AND d.borrado='0'
  10. AND pa.almacen='1' GROUP BY p.id  ORDER BY d.nombre ASC

Si agrupo por el id o nombre de diseño me suma todas las unidades de todas las tallas, si agrupo por id del producto tal y como muestro arriba me salen tantas líneas por diseño como tallas tiene ese producto pero la suma de las unidades por talla está correcta.
Lo ideal sería que en una sola línea apareciese el nombre del diseño y cada talla con la suma de unidades que quedan dentro del almacen.

Gracias de antemano y un saludo!

Última edición por SusoX; 08/10/2009 a las 10:57
  #2 (permalink)  
Antiguo 09/10/2009, 07:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta con IF

Código sql:
Ver original
  1. SELECT  d.nombre,  
  2.              SUM(IF(p.talla=9,pa.unidades,0)) AS CL,
  3.              SUM(IF(p.talla=8,pa.unidades,0)) AS CM,
  4.              SUM(IF(p.talla=7,pa.unidades,0)) AS CS,
  5.              SUM(IF(p.talla=2,pa.unidades,0)) AS L,
  6.              SUM(IF(p.talla=1,pa.unidades,0)) AS M,
  7.              SUM(IF(p.talla=10,pa.unidades,0)) AS NT,
  8.              SUM(IF(p.talla=3,pa.unidades,0)) AS S,
  9.              SUM(IF(p.talla=4,pa.unidades,0)) AS XL,
  10.              pa.umbral
  11. FROM disenyos AS d,
  12.           productos AS p,
  13.           productos_almacenes AS pa
  14. WHERE p.disenyo=d.id
  15.      AND pa.producto=p.id
  16.      AND p.id IN (SELECT p.id
  17.                              FROM productos AS p,
  18.                                        familias AS f,
  19.                                        subfamilias AS sf
  20.                           WHERE p.subfamilia=sf.id
  21.                                AND f.id=sf.familia
  22.                                AND sf.borrado='0'
  23.                               AND f.borrado='0'
  24.                               AND p.borrado='0'
  25.                               AND p.subfamilia='209'
  26.                               AND sf.familia='30')
  27.        AND d.borrado='0'
  28.        AND pa.almacen='1'
  29. GROUP BY p.id  
  30. ORDER BY d.nombre ASC

No tengo tiempo de analizar el resto pero las sumas van así no dentro del if....

quim
  #3 (permalink)  
Antiguo 13/10/2009, 01:50
 
Fecha de Ingreso: agosto-2007
Ubicación: Valencia
Mensajes: 23
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Consulta con IF

Gracias, ahí estaba el problema!!
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 23:44.