Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2012, 10:17
LoBo2024
 
Fecha de Ingreso: febrero-2002
Ubicación: Sabadell
Mensajes: 253
Antigüedad: 22 años, 2 meses
Puntos: 5
Pregunta Comprobar en una tabla u otra con if MySQL

Buenas,

A ver si podeis echarme un cable, que realmente no se si es posible o no, veamos tengo una web que es una tienda y debo controlar que cuando no haya stock del producto no se muestre, el caso es que, puede que haya stock del producto o puede que el producto este dividido en varias opciones donde lo que marcaría el stock serían las opciones.

Ej.:

Pongo un jersey único y exclusivo, la tabla productos se encara del stock del jersey, pero si luego añado ese mismo jersey en diversos colores y tallas y tengo diferente stock, entonces el stock es llevado por la tabla r_productos_complementarios y ahí es donde se me complica un poco la cosa, con lo cual estoy intentando tirar de esta consulta:

SELECT p.id_producto, p.id_tienda, pi.nombre, p.segunda_mano, pi.nombre_amigable, p.referencia, p.precio_con_iva, p.precio_rebajado, if(precio_rebajado > 0, precio_rebajado, precio_con_iva) AS precio_final, p.stock, i.imagen_producto, ci.categoria
FROM productos_idiomas pi, categorias c, categorias_idiomas ci, productos p
LEFT JOIN imagenes_productos i ON p.id_producto = i.id_producto AND i.portada = 1
WHERE p.activo = 1
AND p.id_producto = pi.id_producto
AND c.id_categoria = p.id_categoria
AND c.id_categoria = ci.id_categoria
AND if(p.stock = -1,1,(select (p.stock - COALESCE(sum(cc_d.cantidad),0)) as total_productos from cc_desglose cc_d, cc WHERE p.id_producto = cc_d.id_producto AND cc_d.id_cc = cc.id_cc AND cc.estado >= 2) >0)
GROUP By p.id_producto ORDER By pi.nombre

Esta me está funcionando para mostrar los productos que tengan stock que sean únicos el problema es que no se como hacerlo para hacerlo en la misma query que consulte si es uno u otro y busque el stock en la tabla que toca, el intento que he hecho ha sido el siguiente:

SELECT p.id_producto, p.id_tienda, pi.nombre, p.segunda_mano, pi.nombre_amigable, p.referencia, p.precio_con_iva, p.precio_rebajado, if(precio_rebajado > 0, precio_rebajado, precio_con_iva) AS precio_final, p.stock, i.imagen_producto, ci.categoria
FROM productos_idiomas pi, categorias c, categorias_idiomas ci, productos p
LEFT JOIN imagenes_productos i ON p.id_producto = i.id_producto AND i.portada = 1
WHERE p.activo = 1
AND p.id_producto = pi.id_producto
AND c.id_categoria = p.id_categoria
AND c.id_categoria = ci.id_categoria
AND if(select count(id_producto_complementario) from r_productos_complementarios where id_producto = p.id_producto,
if(p.stock = -1,1,(select (p.stock - COALESCE(sum(cc_d.cantidad),0)) as total_productos from cc_desglose cc_d, cc WHERE p.id_producto = cc_d.id_producto AND cc_d.id_cc = cc.id_cc AND cc.estado >= 2) >0),
p.id_producto = 16)
GROUP By p.id_producto ORDER By pi.nombre

Pero no me ha dado resultado, a ver si podeis echarme un cable :)

Como se puede ver lo que es el CC es el carro de la compra y compruebo lo que se ha vendido con lo que hay en stock en la tabla productos.

Muchas gracias por adelantado a ver si podeis echarme un cable :)