Hola a todos., estoy intentando realizar un query a 3 tablas PRODUCTO, IMAGEN y GALERIA ... éste último indica las imagenes que perteneces al producto.(tiene el id del producto y el id de la imagen)
La tabla IMAGEN tiene un campo "estado" que indica
P si la imagen es la principal de la galería o que sale por default. Y
N si es normal
Mi meta es hacer un listado de los productos además de mostrar esa imagen default.
Por ahora mi consulta es así:
Código:
SELECT p.producto_id, producto_nombre, i.producto_imagen_thumb, i.producto_imagen_estado
FROM producto p
LEFT JOIN (SELECT producto_id, producto_imagen_id FROM producto_galeria GROUP BY producto_id) AS g
ON p.producto_id=g.producto_id
LEFT JOIN (SELECT producto_imagen_id, producto_imagen_thumb, producto_imagen_estado FROM producto_imagen) AS i
ON g.producto_imagen_id=i.producto_imagen_id
ORDER BY producto_nombre ASC
De esta manera me muestra todos los productos pero me muestra la primera imagen insertada en la tabla.
y este es el resultado:
Código:
id Producto Imagen Estado
---------------------------------------------
1 Gatos 1.jpg N
2 Perros 2.jpg N
3 Monos NULL NULL
4 Aves NULL NULL
Lo hice con LEFT JOIN ya que algunos registros no tienen imagenes necesariamente por eso algunos me resultan NULL.
Ahora si yo quisiera agregar una condición WHERE en la relación galeria-imagen donde indico el tipo de estado "P" me resulta esto:
Código:
SELECT p.producto_id, producto_nombre, i.producto_imagen_thumb, i.producto_imagen_estado
FROM producto p
LEFT JOIN (SELECT producto_id, producto_imagen_id FROM producto_galeria GROUP BY producto_id) AS g
ON p.producto_id=g.producto_id
LEFT JOIN (SELECT producto_imagen_id, producto_imagen_thumb, producto_imagen_estado FROM producto_imagen WHERE producto_imagen_estado='P') AS i
ON g.producto_imagen_id=i.producto_imagen_id
ORDER BY producto_nombre ASC
Y el resultado es este:
Código:
id Producto Imagen Estado
---------------------------------------------
1 Gatos NULL NULL
2 Perros NULL NULL
3 Monos NULL NULL
4 Aves NULL NULL
Como ven no captura las imagenes con el estado "P"... intenté con ORDER BY producto_imagen_estado haber si la "P" se ponía arriba de la "N" pero nada!
Mi intención es llegar a :
Código:
id Producto Imagen Estado
---------------------------------------------
1 Gatos 5.jpg P
2 Perros 9.jpg P
3 Monos NULL NULL
4 Aves NULL NULL
No sé que más agregarle o corregir en el query, espero me hayan entendido y me puedan ayudar. Saludos!