SELECT myparent.iid, count(distinct T1.Pk) as t1.pid,; count(distinct T2.Pk) as t2.pid,; count(distinct T3.Pk) as t3.pid,; count(distinct T4.Pk) as t4.pid,; FROM myparent LEFT JOIN T1 ON myparent.iid = t1.pid ; LEFT JOIN T2 ON myparent.iid = t2.pid ; LEFT JOIN T3 ON myparent.iid = t3.pid ; LEFT JOIN T4 ON myparent.iid = t4.pid ; GROUP BY Myparent.iidNOTE in the first line the SELECT statement counts the different Primarykey values of the related tables to avoid multiple counts of the same records, which is caused by the 4 left joins.
>myParent.iid t1.pid t2.pid t3.pid t4.pid >------------ ------ ------ ------ ------ >1 1 2 1 1 >2 1 3 5 2 >3 1 3 5 3 >4 2 4 7 4 >5 4 7 6 >6 4 6 >7 >8 >9 > >* Desired output > >pid Cnt1 Cnt2 Cnt3 Cnt4 >--- ---- ---- ---- ---- > 1 3 1 1 > 2 1 1 1 > 3 2 1 > 4 2 1 1 > 5 2 > 6 2 > 7 2 > 8 > 9Any idea how I could do this just with one SQL ? TIA