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

Uso de case ... then ...

Estas en el tema de Uso de case ... then ... en el foro de Mysql en Foros del Web. Colegas tengo la siguiente consulta: Cita: SELECT municipios.municipio, (CASE productos_municipio.cod_prod WHEN 1 THEN cantidad_prod_mpio ELSE 0 END) AS Aceite, (CASE productos_municipio.cod_prod WHEN 2 THEN cantidad_prod_mpio ...
  #1 (permalink)  
Antiguo 09/07/2009, 07:09
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta Uso de case ... then ...

Colegas tengo la siguiente consulta:

Cita:
SELECT municipios.municipio,
(CASE productos_municipio.cod_prod WHEN 1 THEN cantidad_prod_mpio ELSE 0 END) AS Aceite,
(CASE productos_municipio.cod_prod WHEN 2 THEN cantidad_prod_mpio ELSE 0 END) AS Arroz,
(CASE productos_municipio.cod_prod WHEN 3 THEN cantidad_prod_mpio ELSE 0 END) AS Az_crudo,
(CASE productos_municipio.cod_prod WHEN 4 THEN cantidad_prod_mpio ELSE 0 END) AS Gallina,
(CASE productos_municipio.cod_prod WHEN 5 THEN cantidad_prod_mpio ELSE 0 END) AS Granos,
(CASE productos_municipio.cod_prod WHEN 6 THEN cantidad_prod_mpio ELSE 0 END) AS H_trigo,
(CASE productos_municipio.cod_prod WHEN 7 THEN cantidad_prod_mpio ELSE 0 END) AS Huevos,
(CASE productos_municipio.cod_prod WHEN 8 THEN cantidad_prod_mpio ELSE 0 END) AS P_carn,
(CASE productos_municipio.cod_prod WHEN 9 THEN cantidad_prod_mpio ELSE 0 END) AS Pollo,
(CASE productos_municipio.cod_prod WHEN 10 THEN cantidad_prod_mpio ELSE 0 END) AS Salch,
(CASE productos_municipio.cod_prod WHEN 11 THEN cantidad_prod_mpio ELSE 0 END) AS Visceras
FROM productos_municipio, municipios, productos
where productos_municipio.cod_municipio=municipios.cod_m unicipio and
productos_municipio.cod_prod=productos.cod_prod
GROUP BY productos_municipio.cod_municipio

Lo que me genera los productos que hay por provincias, pero quiero ponerle una condición donde si el producto que se brinda no esta disponible, entonces que no lo muestre, Esta opción DISPONIBLE, viene de otra tabla que almacena todos los productos y puede tener valor o no.

Como hago esto.
  #2 (permalink)  
Antiguo 09/07/2009, 07:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Uso de case ... then ...

Como recomendación, no anides las tablas en el where. Haz uso de las sentencias join para unir las tablas. De esta forma, el requerimiento que tienes podría ser solucionado con el uso de left join o inner join.

Código sql:
Ver original
  1. SELECT m.municipio,
  2. (CASE pm.cod_prod WHEN 1 THEN cantidad_prod_mpio ELSE 0 END) AS Aceite,
  3. (CASE pm.cod_prod WHEN 2 THEN cantidad_prod_mpio ELSE 0 END) AS Arroz,
  4. (CASE pm.cod_prod WHEN 3 THEN cantidad_prod_mpio ELSE 0 END) AS Az_crudo,
  5. (CASE pm.cod_prod WHEN 4 THEN cantidad_prod_mpio ELSE 0 END) AS Gallina,
  6. (CASE pm.cod_prod WHEN 5 THEN cantidad_prod_mpio ELSE 0 END) AS Granos,
  7. (CASE pm.cod_prod WHEN 6 THEN cantidad_prod_mpio ELSE 0 END) AS H_trigo,
  8. (CASE pm.cod_prod WHEN 7 THEN cantidad_prod_mpio ELSE 0 END) AS Huevos,
  9. (CASE pm.cod_prod WHEN 8 THEN cantidad_prod_mpio ELSE 0 END) AS P_carn,
  10. (CASE pm.cod_prod WHEN 9 THEN cantidad_prod_mpio ELSE 0 END) AS Pollo,
  11. (CASE pm.cod_prod WHEN 10 THEN cantidad_prod_mpio ELSE 0 END) AS Salch,
  12. (CASE pm.cod_prod WHEN 11 THEN cantidad_prod_mpio ELSE 0 END) AS Visceras
  13. FROM productos_municipio pm
  14. INNER JOIN municipios m
  15. ON pm.cod_municipio=m.cod_municipio
  16. INNER JOIN productos p
  17. ON pm.cod_prod=p.cod_prod
  18. GROUP BY pm.cod_municipio
Esta consulta solo te mostrará los que existan en las tablas relacionadas.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 09/07/2009, 08:32
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Uso de case ... then ...

Colega, le añadi a la consulta que me agrupara también por producto pues de la forma que estaba habían resultados que me omitía, pero ahora tengo otro problema, me duplica los municipios, como hago para que solo me muestre los municipios una sola vez y que sus productos salgan en una misma fila, algo como :

Municipio ---------------- producto1 ---------------- producto 2
m1----------------------------15kg------------------------10kg
m2----------------------------0kg----------------------------21kg

por otra parte no me funciona todavía la condición de que solo me muestre los prodcutos que esten disponibles.
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 04:19.