Cú giật đầu gối của tôi là một truy vấn phụ:
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
Tôi thực sự không chắc bạn có thể làm gì để tránh điều này. Bạn đang thấy hành vi được mong đợi (và nói chung là hành vi mong muốn).
Tất nhiên, nếu bạn biết rằng ID của cả hai sẽ không lặp lại, bạn có thể sử dụng riêng biệt:
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