2010-08-14 5 views
0

J'ai 2 tablesaide comte avec jointure gauche

  • 1er table appelée services a id_service, nom, Date.
  • 2ème table appelée services_images a id_img, img_name, id_service.

Ce que je veux faire est d'obtenir la liste des services avec une rangée appelée NUM_IMAGES ce qui compte le nombre d'images il y a par service.

J'ai essayé

SELECT COUNT(services_images.id_img) as num_images, services.* FROM services 
LEFT JOIN services_images ON (services_images.id_service = services.id_service) ORDER BY service.id_service 

Il ne marche pas le travail et je ne sais pas comment y remédier. Cela retournera seulement UN service (le premier id_service: 1) avec comme num_images le nombre de toutes les lignes dans services_images! Même si changer "services_images.id_service = services.id_service" à "services_images.id_service = 2" il montre encore le premier ID! Donc, ces règles ne sont même pas considérées.

Merci

Répondre

1

Ajout d'une clause GROUP BY devrait faire l'affaire

SELECT COUNT(services_images.id_img) as num_images, services.* 
FROM services 
LEFT JOIN services_images ON (services_images.id_service = services.id_service) 
GROUP BY service.id_service 
ORDER BY service.id_service 

Ce groupera vos lignes par le service et l'agrégation de compte vous donnera le nombre d'images par service.

Questions connexes