あなたはおそらく1を持っている:nは、少なくとも2との間の関係3つのテーブル。彼はあなたが個々のテーブルごとにレコードを数えると、あなたが持っているよりも多くのレコードを持つことになります。
あなたは、カウント(明確な...)を使用し、その後、与えられたフィールドの異なる値をカウントしたい場合:
select
vpp.Name
,count(distinct sx.Occurences) as sx_Occurences
,count(distinct vpp.Occurences) as vpp_Occurences
,count(distinct sd.Occurences) as sd_Occurences
from v_p vpp
left outer join s_x sx on sx.ID = vpp.ID
left outer join s_d sd on sd.ID = vpp.ID
group by vpp.Name
をそうしないと、各テーブルで個別にカウントを行う必要があります。 3つのクエリをサブクエリとして組み合わせることができます。
select
t1.Name
,sx_Occurences
,vpp_Occurences
,sd_Occurences
from
(select name, id, count(vpp.Occurences) as vpp_Occurences
from v_p vpp
group by name, id) t1
left outer join
(select id, count(sx.Occurences) as sx_Occurences
from s_x sx
group by id) t2 on t1.ID = t2.ID
left outer join
(select id, count(sd.Occurences) as sd_Occurences
from s_d sd
group by id) t3 on t1.ID = t3.ID
v_pに含まれていないs_xまたはs_dオカレンスがありますか? –