Mysql
 sql >> Database >  >> RDS >> Mysql

left join moltiplicando i valori

Il mio istintivo è una sottoquery:

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

Non sono proprio sicuro di cosa tu possa fare per evitarlo. Stai vedendo il comportamento previsto (e generalmente desiderato).

Ovviamente, se sai che gli ID in entrambi non si ripetono, puoi utilizzare distinto:

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