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

Consulta con Condicion de CASE o IF en Mysql

Estas en el tema de Consulta con Condicion de CASE o IF en Mysql en el foro de Mysql en Foros del Web. Hola a todos de forosdelweb.com Por favor me pueden ayudar hacer una consulta con condiciones en mysql Aquí tengo un ejemplo que estoy intentando hacer ...
  #1 (permalink)  
Antiguo 28/01/2010, 17:25
(Desactivado)
 
Fecha de Ingreso: enero-2008
Mensajes: 272
Antigüedad: 16 años, 11 meses
Puntos: 1
Consulta con Condicion de CASE o IF en Mysql

Hola a todos de forosdelweb.com

Por favor me pueden ayudar hacer una consulta con condiciones en mysql

Aquí tengo un ejemplo que estoy intentando hacer pero no funciona

Por favor ayúdenme
Muchas gracias


SELECT f.fecha AS "Fecha Factura", f.numero AS "Nº Factura", f.monto AS "Monto Factura",
CASE f.estado
WHEN f.estado=1 THEN
"Cancelado"
ELSE "Por Cobrar"
END CASE,
g.nro_nota AS "Nº Guía", g.total AS "Monto Guía", g.tipo_guia AS "Estado Guía"
FROM factura f, factura_detalle df, guia g
WHERE f.id = df.idfactura
AND df.idguia = g.codguia_pk
  #2 (permalink)  
Antiguo 28/01/2010, 19:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Consulta con Condicion de CASE o IF en Mysql

que error te saca?

saludos zack78
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 28/01/2010, 19:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta con Condicion de CASE o IF en Mysql

Código MySQL:
Ver original
  1.    f.fecha "Fecha Factura",
  2.    f.numero "Nº Factura",
  3.    f.monto "Monto Factura",
  4.    CASE f.estado WHEN f.estado=1 THEN 'Cancelado' ELSE 'Por Cobrar' END,
  5.    g.nro_nota "Nº Guía",
  6.    g.total "Monto Guía",
  7.    g.tipo_guia "Estado Guía"
  8. FROM factura f INNER JOIN  factura_detalle df ON f.id = df.idfactura
  9.           INNER JOIN guia g ON  df.idguia = g.codguia_pk;
Dos errores:
1. El final de la función en END y no END CASE. END CASE se usa como control de flujo en los stored procedures.
2. Las comillas se usan igual que los acentos agudos (`), para encerrar nombres de bases, tablas o campos. Pero no se usan para las cadenas de texto. Para eso se usan apóstrofes (')

Además, las igualaciones de valores en campos no deben hacerse por el WHERE sino con [RIGHT|INNER|LEFT] JOIN ... ON ...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 01/02/2010, 17:16
(Desactivado)
 
Fecha de Ingreso: enero-2008
Mensajes: 272
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: Consulta con Condicion de CASE o IF en Mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código MySQL:
Ver original
  1.    f.fecha "Fecha Factura",
  2.    f.numero "Nº Factura",
  3.    f.monto "Monto Factura",
  4.    CASE f.estado WHEN f.estado=1 THEN 'Cancelado' ELSE 'Por Cobrar' END,
  5.    g.nro_nota "Nº Guía",
  6.    g.total "Monto Guía",
  7.    g.tipo_guia "Estado Guía"
  8. FROM factura f INNER JOIN  factura_detalle df ON f.id = df.idfactura
  9.           INNER JOIN guia g ON  df.idguia = g.codguia_pk;
Dos errores:
1. El final de la función en END y no END CASE. END CASE se usa como control de flujo en los stored procedures.
2. Las comillas se usan igual que los acentos agudos (`), para encerrar nombres de bases, tablas o campos. Pero no se usan para las cadenas de texto. Para eso se usan apóstrofes (')

Además, las igualaciones de valores en campos no deben hacerse por el WHERE sino con [RIGHT|INNER|LEFT] JOIN ... ON ...

Muchas gracias, funciona perfectamente

Etiquetas: case
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 08:03.