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

Creo que estoy ofuscado pero no acabo de ver como hacerlo como tu dices, quizás porque nos falta información sobre el tema, ya que no es lo mismo para mi tener un producto único que un producto con varias opciones, pero como no consigo aclararme con rehacer de nuevo la bbdd he conseguido al final un sql que si me sirve, igualmente lo dejo aquí por si a alguien le puede servir:

Código SQL:
Ver original
  1. 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
  2. FROM productos_idiomas pi, categorias c, categorias_idiomas ci, productos p
  3. LEFT JOIN imagenes_productos i ON p.id_producto = i.id_producto AND i.portada = 1
  4. WHERE p.activo = 1
  5.     AND p.id_producto = pi.id_producto
  6.     AND c.id_categoria = p.id_categoria
  7.     AND c.id_categoria = ci.id_categoria
  8.     AND IF((SELECT COUNT(id_producto_complementario) AS total FROM r_productos_complementarios rpc WHERE rpc.id_producto = p.id_producto) = 0,
  9.         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),
  10.         (SELECT (SELECT COALESCE(SUM(stock),0) AS total_stock FROM r_productos_complementarios rpc WHERE rpc.id_producto = 1) -
  11.         (SELECT COALESCE(SUM(cantidad),0) AS total_pedido FROM cc_desglose cc_d, cc WHERE cc_d.id_producto = 1 AND cc_d.id_cc = cc.id_cc AND cc.estado >= 2) AS total) >0)
  12.     AND c.id_categoria IN(57,60,61,62,63,70,71,72,126,127,129)
  13. GROUP BY p.id_producto ORDER BY pi.nombre

Al final lo he solucionado así, seguramente si le diera más vueltas podría volver a redefinir lo que son las tablas para hacerlo como comentas pero me siento espeso y creo que me va a costar más cambiar todo eso que haber hecho la query ;)

(Gracies ;) )

Última edición por LoBo2024; 10/05/2012 a las 04:44 Razón: Faltaba un parametro en la query.