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

[SOLUCIONADO] Consulta case

Estas en el tema de Consulta case en el foro de Mysql en Foros del Web. tengo esta consulta y en el caso de case invariablemente me escribe compra, no me hace la variación a venta me pueden ayudar saludos _________________- ...
  #1 (permalink)  
Antiguo 24/09/2013, 08:31
Avatar de dorde  
Fecha de Ingreso: diciembre-2003
Mensajes: 145
Antigüedad: 20 años, 3 meses
Puntos: 7
Consulta case

tengo esta consulta
y en el caso de case invariablemente me escribe compra, no me hace la variación a venta

me pueden ayudar



saludos
_________________-

Código MySQL:
Ver original
  1.  
  2. (case i.status when (i.status = _utf8'1') then _utf8'Compra' else _utf8'Venta' end) AS `status`,
  3. i.id as  Factura,
  4. i.id_cliente as "numero de cliente",
  5. c.nombre as nombre,
  6. i.id_producto,
  7. p.nombre as "Producto"
  8.  
  9. inventario as i,
  10. cliente as c,
  11. productos as p
  12.  
  13. i.id_cliente=c.id and
  14. i.id_producto=p.id
__________________
Pero si alguno de vosotros se ve falto de sabiduría, que la pida a Dios, el cual da a todos abundantemente y sin reproche, y le será dada. Pero que pida con fe, sin dudar

Santiago 1.5-6

Última edición por gnzsoloyo; 24/09/2013 a las 10:10
  #2 (permalink)  
Antiguo 24/09/2013, 10:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Consulta case

Código MySQL:
Ver original
  1. if(i.status="1","Compra","Venta") "status",
  2. i.id Factura,
  3. i.id_cliente "numero de cliente",
  4. c.nombre as nombre,
  5. i.id_producto,
  6. p.nombre "Producto"
  7. from (inventario i INNER JOIN cliente c ON i.id_cliente=c.id)
  8.          INNER JOIN productos p i.id_producto=p.id;

Dependiendo del tipo que sea i.status sera

if(i.status="1"... si es VARCHAR
if(i.status=1 ... si es INTEGER o BOOLEANO
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 24/09/2013 a las 10:19
  #3 (permalink)  
Antiguo 24/09/2013, 10:17
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Consulta case

¿el campo status es numérico o de cadena?
A mi entender, si lo estás comparando con "1", no deberías tenerlo como CHAR o VARCHAR...

En todo caso, no necesitas un CASE para lograr eso, y además usas una sintaxis poco eficiente en el JOIN:
Código MySQL:
Ver original
  1.     IF(i.status = 1, 'Compra', 'Venta') `status`,
  2.     i.id Factura,
  3.     i.id_cliente `numero de cliente`,
  4.     c.nombre nombre,
  5.     i.id_producto,
  6.     p.nombre Producto
  7.     inventario i
  8.     INNER JOIN productos p ON i.id_producto=p.id
  9.     INNER JOIN cliente c ON i.id_cliente=c.id;
Notas:
- No uses AS. Es una cláusula obsoleta que sólo está por compatibilidad de motores muy viejos. Ya no cumple funciones salvo ensuciar el código.
- No hagas JOINs implícitos (la coma), hazlos explícitos. MySQL realiza optimizaciones en el FROM, pero no en el WHERE.
- Ten cuidado con el uso de comillas ("), porque en algunos servidores pueden causar errores de sintaxis.
- El orden de las tablas importa en SQL.
__________________
¿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 24/09/2013, 11:26
Avatar de dorde  
Fecha de Ingreso: diciembre-2003
Mensajes: 145
Antigüedad: 20 años, 3 meses
Puntos: 7
Respuesta: Consulta case

Genial!!!

Muchísimas gracias y mas aun por el consejo!! a rehacer códigos!!
__________________
Pero si alguno de vosotros se ve falto de sabiduría, que la pida a Dios, el cual da a todos abundantemente y sin reproche, y le será dada. Pero que pida con fe, sin dudar

Santiago 1.5-6
  #5 (permalink)  
Antiguo 25/09/2013, 09:49
Avatar de dorde  
Fecha de Ingreso: diciembre-2003
Mensajes: 145
Antigüedad: 20 años, 3 meses
Puntos: 7
Respuesta: Consulta case

Solo una observación:

Cuando , haces la consulta y la grabas como vista en Mysql, y la exportas , te regresa el " as"
__________________
Pero si alguno de vosotros se ve falto de sabiduría, que la pida a Dios, el cual da a todos abundantemente y sin reproche, y le será dada. Pero que pida con fe, sin dudar

Santiago 1.5-6
  #6 (permalink)  
Antiguo 25/09/2013, 09:51
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Consulta case

Eso es puramente por compatibilidad con motores viejos, pero ya no es parte del estándar ANSI.
De hecho, en los lineamientos de muchas empresas de desarrollo se estipula que no se debe usar esa cláusula cuando se construyen las consultas. Al menos en las empresas en las que he trabajado, es mandatorio no ponerla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: case, php, select, variable
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 00:41.