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

jointure gauche multipliant les valeurs

Mon réflexe est une sous-requête :

select count(capture_id) as count_captures, 
    (select count(id) as count_items
         from items i where i.creator_user_id = captures.user_id) as count_items 
from captures 
where user_id = 9

Je ne sais pas vraiment ce que vous pouvez faire pour éviter cela. Vous constatez un comportement attendu (et généralement souhaité).

Bien sûr, si vous savez que les identifiants des deux ne se répéteront pas, vous pouvez utiliser distinct :

SELECT COUNT( DISTINCT capture_id) as count_captures, 
      COUNT( DISTINCT items.id) as count_items 
FROM captures 
LEFT JOIN items ON captures.user_id = items.creator_user_id 
    WHERE user_id = 9