Mysql
 sql >> Base de données >  >> RDS >> Mysql

Limiter les résultats du tableau joint à une seule ligne

SELECT p.*, ph.*
FROM products AS p
INNER JOIN product_photos AS ph
    ON p.product_id = ph.product_id
LEFT JOIN product_photos AS ph2
    ON p.product_id = ph2.product_id
    AND ph2.photo_order < ph.photo_order
WHERE ph2.photo_order IS NULL
ORDER BY p.product_title ASC

Notez la façon dont il se joint à la table product_photos deux fois. Le WHERE ph2.photo_order IS NULL jettera tout sauf l'ordre de photo le plus bas. Cela ne vous protégera pas contre le combo product_id / photo_orders en double, vous pouvez ajouter un GROUP BY sur p.id si c'est le cas.