Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   extraña ocurrencia en mysql (https://www.clubdelphi.com/foros/showthread.php?t=74102)

DarkBlue 30-05-2011 23:29:40

extraña ocurrencia en mysql
 
bueno lo que pasa que estuve haciendo una consulta que me reompio la cabeza no soy nuevo usando sql pero si el manejador de mysql tal ves por eso se atribulla este fenomeno



existe un campo donde indica cuantos litros tiene cada producto y si tiene 0 el producto no tiene litros,entonces hize unca consulta de la siguiente manera para concatenar el tipo de producto la marca del producto, el nombre del producto y de cuantos litros es si no tiene litros le pongo un espacio por que esas son piezas y no productos

Código SQL [-]

select concat(tp2.tipo_producto,' ',ma2.marca_producto,' ', p2.producto),
case p2.litros when p2.litros>1 then  ' '
when p2.litros=1 then p2.litros
else cast(p2.litros as char) end
from productos as p2,tipo_producto as tp2,marcas_productos as ma2
where p2.id_tipoproducto=tp2.id_tipoproducto and 
p2.ID_MARCAS_PRODUCTOS=ma2.ID_MARCAS_PRODUCTOS


esta consulta funciona pero lo curioso esta que si le pongo when p2.litros=0 nunca me detecta esta condicion le tuve que poner >1 y ya tengo productos con >=1 de un litro

a que se debe???

muchas gracias!!

duilioisola 31-05-2011 10:54:19

Cita:

si le pongo when p2.litros=0 nunca me detecta esta condicion
Supongo que te refieres a la segunda linea

Código SQL [-]
select concat(tp2.tipo_producto,' ',ma2.marca_producto,' ', p2.producto),
case p2.litros when p2.litros>1 then  ' '
when p2.litros=1 then p2.litros
else cast(p2.litros as char) end
from productos as p2,tipo_producto as tp2,marcas_productos as ma2
where p2.id_tipoproducto=tp2.id_tipoproducto and 
p2.ID_MARCAS_PRODUCTOS=ma2.ID_MARCAS_PRODUCTOS

Puede ser que no tengas ningún registro donde litros=0.
Prueba poner un rango
Código SQL [-]
when ((p2.litros>-0.01) and (p2.litros=0.01))

DarkBlue 31-05-2011 22:38:23

enserio que si tengo registros con 0 litros por eso era lo que me extra;aba también intente ponerle un rango y me sacaba de onda pero no era el rango correcto que locura eres un genio nunca se me ocurrio asi quedo de esta otra manera muchas gracias

Código SQL [-]

select concat(tp2.tipo_producto,' ',ma2.marca_producto,' ', p2.producto),
case p2.litros 
when p2.litros>0 and p2.litros<=0 then ' ' else
p2.litros
end
from productos as p2,tipo_producto as tp2,marcas_productos as ma2
where p2.id_tipoproducto=tp2.id_tipoproducto and 
p2.ID_MARCAS_PRODUCTOS=ma2.ID_MARCAS_PRODUCTOS and p2.producto is not null

que locura que le tenga que poner un rango asi si ya sabe que cuando sea igual a 0 !!! xD no crees!!


La franja horaria es GMT +2. Ahora son las 00:33:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi