亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將具有多個表的聚合轉換為 Laravel 中的 USE DB?

如何將具有多個表的聚合轉換為 Laravel 中的 USE DB?

PHP
至尊寶的傳說 2021-12-24 16:07:41
我如何在 Laravel 上編寫這樣的查詢,順便說一句我正在使用 DB我按照這個指令 https://dba.stackexchange.com/questions/175786/join-multiple-tables-for-aggregates,但仍然沒有得到它mysql查詢:SELECT inptkegiatan.IDKEGIATAN,    (SELECT COUNT(kuesioner.PERTANYAAN)    FROM kuesioner     WHERE inptkegiatan.IDKEGIATAN = kuesioner.IDKEGIATAN) as totalPertanyaan,    (SELECT SUM(hasilkuesioner.JAWABAN)     FROM hasilkuesioner     WHERE kuesioner.IDKEGIATAN = hasilkuesioner.IDKEGIATAN) as totalJawaban,    (SELECT COUNT(regiskegiatan.IDKEGIATAN)     FROM regiskegiatan     WHERE hasilkuesioner.IDKEGIATAN = regiskegiatan.IDKEGIATAN ) as totalUserFROM inptkegiatan     LEFT JOIN kuesioner ON inptkegiatan.IDKEGIATAN = kuesioner.IDKEGIATAN     LEFT JOIN hasilkuesioner ON inptkegiatan.IDKEGIATAN = hasilkuesioner.IDKEGIATAN     LEFT JOIN regiskegiatan ON inptkegiatan.IDKEGIATAN = regiskegiatan.IDKEGIATAN GROUP BY inptkegiatan.IDKEGIATAN我用那個網址在我的 Laravel 上試過這個,仍然沒有得到它$datatwo = DB::table('inptkegiatan')            ->join('kuesioner', 'inptkegiatan.IDKEGIATAN', '=', 'kuesioner.IDKEGIATAN')            ->join('hasilkuesioner', 'inptkegiatan.IDKEGIATAN', '=', 'hasilkuesioner.IDKEGIATAN')            ->join('regiskegiatan', 'inptkegiatan.IDKEGIATAN', '=', 'regiskegiatan.IDKEGIATAN')            ->where('IDNARASUMBER', '=', $value->PROFILEUSERS_ID)            ->select('kuesioner.PERTANYAAN', 'hasilkuesioner.*', 'regiskegiatan.*',                DB::raw('count(DISTINCT(kuesioner.IDKEGIATAN)) + SUM(DISTINCT(hasilkuesioner.IDKEGIATAN)) as articles')            )            ->groupBy('inptkegiatan.IDKEGIATAN')            ->get();
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

首先,使用leftJoin代替join,因為join是替代的innerJoin


$datatwo = DB::table('inptkegiatan')

    ->leftJoin('kuesioner', 'inptkegiatan.IDKEGIATAN', '=', 'kuesioner.IDKEGIATAN')

    ->leftJoin('hasilkuesioner', 'inptkegiatan.IDKEGIATAN', '=', 'hasilkuesioner.IDKEGIATAN')

    ->leftJoin('regiskegiatan', 'inptkegiatan.IDKEGIATAN', '=', 'regiskegiatan.IDKEGIATAN')

    ->where('inptkegiatan.IDNARASUMBER', '=', $value->PROFILEUSERS_ID)

    ->select([

        'inptkegiatan.IDKEGIATAN',

        \DB::raw('SELECT COUNT(kuesioner.PERTANYAAN)

            FROM kuesioner 

            WHERE inptkegiatan.IDKEGIATAN = kuesioner.IDKEGIATAN) as totalPertanyaan'),


        \DB::raw('(SELECT SUM(hasilkuesioner.JAWABAN) 

            FROM hasilkuesioner 

            WHERE kuesioner.IDKEGIATAN = hasilkuesioner.IDKEGIATAN) as totalJawaban'),

        \DB::raw('(SELECT COUNT(regiskegiatan.IDKEGIATAN) 

            FROM regiskegiatan 

            WHERE hasilkuesioner.IDKEGIATAN = regiskegiatan.IDKEGIATAN ) as totalUser')

    ])

    ->groupBy('inptkegiatan.IDKEGIATAN')

    ->get();

試試這個。它應該工作


查看完整回答
反對 回復 2021-12-24
  • 1 回答
  • 0 關注
  • 168 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號