Plusieurs requêtes dans un seul tableau

Default
,

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'effectue 3 requêtes pour obtenir le nombre de dossiers par jour / semaine / mois.

Mon affichage ci-dessous dans la variable $nombreDossiersParCompagnies fonctionne très bien mais le traitement se fait uniquement sur la requête du jour. J'aimerai du coup pouvoir imbriquer les résultats par semaine et mois sachant que les Compagnies ne doivent pas être en doublons en fonction des requêtes mais je ne sais pas comment m'y prendre.

        $todayCountNombreDossiersParCompagnies = DB::table('assurance_dossiers as AD')
        ->select('C.co_raisonsociale as Compagnies', DB::raw('COUNT(AD.ad_cpgid) as nombreDossiers'))
        ->leftJoin('compagnies_produits_gestionnaires as CPG', 'CPG.id', '=', 'AD.ad_cpgid')
        ->leftJoin('compagnies as C', 'C.id', '=', 'CPG.cpg_coid')
        ->whereRaw('day(from_unixtime(ad_date_dossiers)) = '. $day .'')
        ->whereRaw('month(from_unixtime(ad_date_dossiers)) = '. $month .'')
        ->whereRaw('year(from_unixtime(ad_date_dossiers)) = '. $year .'')
        ->where('ad_suspendu', '=', 0)
        ->where('ad_avancement', '>=', 2)
        ->groupBy('CPG.cpg_coid')
        ->orderBy('nombreDossiers', 'desc')
        ->take(5)
        ->get();

        $weekCountNombreDossiersParCompagnies = DB::table('assurance_dossiers as AD')
        ->select('C.co_raisonsociale as Compagnies', DB::raw('COUNT(AD.ad_cpgid) as nombreDossiers'))
        ->leftJoin('compagnies_produits_gestionnaires as CPG', 'CPG.id', '=', 'AD.ad_cpgid')
        ->leftJoin('compagnies as C', 'C.id', '=', 'CPG.cpg_coid')
        ->whereBetween('ad_date_dossiers', [$monday, $sunday])
        ->where('ad_suspendu', '=', 0)
        ->where('ad_avancement', '>=', 2)
        ->groupBy('CPG.cpg_coid')
        ->orderBy('nombreDossiers', 'desc')
        ->take(5)
        ->get();

        $monthCountNombreDossiersParCompagnies = DB::table('assurance_dossiers as AD')
        ->select('C.co_raisonsociale as Compagnies', DB::raw('COUNT(AD.ad_cpgid) as nombreDossiers'))
        ->leftJoin('compagnies_produits_gestionnaires as CPG', 'CPG.id', '=', 'AD.ad_cpgid')
        ->leftJoin('compagnies as C', 'C.id', '=', 'CPG.cpg_coid')
        ->whereRaw('month(from_unixtime(ad_date_dossiers)) = '. $month .'')
        ->where('ad_suspendu', '=', 0)
        ->where('ad_avancement', '>=', 2)
        ->groupBy('CPG.cpg_coid')
        ->orderBy('nombreDossiers', 'desc')
        ->take(5)
        ->get();

        $nombreDossiersParCompagnies = '<table class="table table-bordered"><thead><th>Compagnies</th><th>Nombre de dossiers / jour</th></thead>';
        if($todayCountNombreDossiersParCompagnies == 0) {
            $nombreDossiersParCompagnies .= '<tr><td colspan="2">Aucun résultat pour le moment.</td></tr>';
        } else {
            foreach($todayCountNombreDossiersParCompagnies as $tCNDPC) {
                $nombreDossiersParCompagnies .= '<tr><td>'. $tCNDPC->Compagnies .'</td><td>'. $tCNDPC->nombreDossiers .'</td></tr>';
            }
        }
        $nombreDossiersParCompagnies .= '</tbody></table>';

Un petit coup de pouce serait le bienvenu, merci !