SELECT MAX(Program.Name) AS Program,MAX(Something.Name) AS Something,COUNT(*) AS 'Count of projects',COUNT(DISTINCT Provider.ID) AS Providers FROM MainTable INNER JOIN Program ON MainTable.NoProgram=Program.ID INNER JOIN Something ON MainTable.NoSomething=Something.ID INNER JOIN Project ON MainTable.ID=Projet.NoMainTable INNER JOIN Provider ON Projet.NoProvider=Provider.ID GROUP BY Program.Name,Something.Name