96 votes

MySQL JOIN avec LIMIT 1 sur la table jointe

Je veux joindre deux tables, mais obtenir seulement un enregistrement de la table 2 par enregistrement de la table 1.

Par exemple :

SELECT c.id, c.title, p.id AS product_id, p.title
FROM categories AS c
JOIN products AS p ON c.id = p.category_id

Cela me permettrait d'avoir tous les enregistrements dans products ce qui n'est pas ce que je veux. Je veux 1 [le premier] produit par catégorie (j'ai une catégorie de produits). sort dans le champ des produits).

Comment dois-je m'y prendre ?

-42voto

goggin13 Points 2324

J'essaierais quelque chose comme ça :

SELECT C.*,
      (SELECT P.id, P.title 
       FROM products as P
       WHERE P.category_id = C.id
       LIMIT 1)
FROM categories C

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X