Один из способов - использовать пару производных таблиц для вычисления ваших подсчетов отдельно, а затем объединить их для получения окончательного результата:
select t1.number, t1.count1, t2.count2
from (select number, count(number) as count1 from table1 group by number) as t1
join (select number, count(number) as count2 from table2 group by number) as t2
on t1.number = t2.number
Возможно, есть и другие способы, но это должно сработать, и это первое, что пришло в голову.
Вы получаете свой "мультипликативный" эффект в значительной степени по причинам, которые вы подозреваете. Если у вас есть это:
table1(id,x) table2(id,x)
------------ ------------
1, a 4, a
2, a 5, a
3, b 6, b
Тогда присоединение к ним на x
даст вам следующее:
1,a, 4,a
1,a, 5,a
2,a, 4,a
2,a, 5,a
...
Обычно вы можете использовать GROUP BY для сортировки дубликатов, но вы не можете сделать это, потому что это может испортить количество ваших таблиц.