Aquí es una estructura de tabla simplificada:limita los resultados de tabla unida a una fila
TABLE products (
product_id INT (primary key, auto_increment),
category_id INT,
product_title VARCHAR,
etc
);
TABLE product_photos (
product_photo_id (primary key, auto_increment),
product_id INT,
photo_href VARCHAR,
photo_order INT
);
Un producto puede tener varias fotos, la primera foto del producto para cada producto (en base a la photo_order) es la foto predeterminada.
Ahora, solo necesito todas las fotos en la página de detalles del producto, pero en las páginas donde estoy enumerando varios productos, por ejemplo, una página de directorio de productos, solo quiero mostrar la foto predeterminada.
Lo que intento hacer es consultar una lista de productos que incluya la foto predeterminada para cada producto.
Obviamente, esto no funciona, devolverá todas las fotos con la información del producto duplicado para cada foto:
SELECT p.*, ph.*
FROM products AS p
LEFT JOIN product_photos AS ph
ON p.product_id=ph.product_id
ORDER BY p.product_title ASC
tengo que encontrar la manera de hacer algo como esto, pero no sé la sintaxis (o si es posible)
SELECT p.*, ph.*
FROM products AS p
LEFT JOIN product_photos AS ph
ON p.product_id=ph.product_id **ORDER BY ph.photo_order ASC LIMIT 1**
ORDER BY p.product_title ASC
Editar: me di cuenta de una solución con la ayuda de las respuestas a continuación, gracias a todos!
SELECT p.*, ph.*
FROM products AS p
LEFT JOIN product_photos AS ph
ON p.product_id=ph.product_id
AND ph.photo_order =
(
SELECT MIN(z.photo_order)
FROM product_photos AS z
WHERE z.product_id=p.product_id
)
GROUP BY p.product_id
ORDER BY p.product_title ASC
pls proporciona un ejemplo de PRODUCT_PHOTOS - Quiero ver cómo PHOTO_ORDER controla el defecto porque usted no proporcionó tipos de datos –
photo_order es sólo un número entero, que * debe * ser único por producto, pero no necesariamente garantizado – Rob
Si cambia a una combinación correcta y ordena por: .product_title ASC, .photo_order ASC Creo que obtendrá una fila por producto y será la primera foto. No verá productos que no tengan una foto (que puede ser un problema). Sin embargo, debería ser una consulta mucho más simple. – TheJacobTaylor