Tema: Condicional
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2015, 03:02
moscrates
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 15 años, 9 meses
Puntos: 7
Condicional

Hola amigos.

Tengo una duda y no se si realmente se pueda hacer con MySQL, pero tampoco quería quedarme sin preguntar, si no se puede pues ni modo.

Tengo dos tablas: Productos y ImgProductos
Un Productos puede tener n Imágenes y las imágenes solo pueden tener un productos.
Entre todas las imágenes que puede tener un producto, solo puede tener una imagen principal, que es la imagen que se muestra como caratula del productos las otras son parte de una galería, la imagen principal puede ser cualquiera de las que imágenes que pertenezcan al productos.

¿Como puedo saber cual es la imagen principal?
Simple, la tabla ImgProductos tiene un campo princpal de tipo bool donde el registro con 1 es el principal

hasta aqui no hay problema pues es un simple INNER JOIN

Código MySQL:
Ver original
  1. SELECT * FROM productos AS P
  2. INNER JOIN imgproductos AS I
  3. ON P.IdProducto = I.IdProducto
  4. WHERE P.IdEmpresa = 1
  5. AND I.Principal  = 1

Pero, puede ser que el producto no tenga ninguna imagen principal y se tome como imagen principal cualquiera de las que tiene.


Mi pregunta es como puedo hacer que me traiga siempre una imagen, es decir si hago ejecuto la consulta que esta arriba: si hay un producto que no tenga una imagen principal no me va a regresar ese registro y yo lo necesito, en otras palabras si no tiene imagen principal que me regrese cualquiera de las que tiene.


Productos
+--------------+--------------+
| Field | Type |
+--------------+--------------+
| IdProducto | int(11) |
| IdEmpresa | int(10) |
| PNombre | varchar(200) |
+--------------+--------------+



ImgProductos
+------------+-------------+
| Field | Type |
+------------+-------------+
| IdImagen | int(11) |
| IdProducto | int(10) |
| Imagen | text |
| Principal | tinyint(1) |
+------------+-------------+