サブクエリ
変数はたいていグローバル化しないと渡せない
$ranks_tags = DB::table('ranks_tags')->where('label',$this->range_w);
DB::table('post_tags as p')->select(
DB::raw( //この中の''は1セット。最初と最後のみで全体を囲む
'p.fave_id , p.tag_id, f.name , f.cnt_cheer , s.before_cnt_cheer
, f.cnt_cheer - s.before_cnt_cheer AS incre_cheer
, f.cnt_post, s.before_cnt_post
, f.cnt_post - s.before_cnt_post AS incre_post
, cnt_share
, s.id as ranktag_id'
)
)
->LeftJoin( 'tags as t' , 'p.tag_id' ,'t.id')
->LeftJoin( 'faves as f', 'p.fave_id','f.id')
->LeftJoinSub($ranks_tags, 's', function ($join) {
$join->on('s.tag_id' , 'p.tag_id' );
$join->on('p.fave_id' , 's.fave_id');
})
->groupBy('p.tag_id' , 'p.fave_id' , 'incre_cheer' , 'ranktag_id' )
->orderBy('p.tag_id' ,'asc')
->orderBy('incre_cheer' ,'DESC')
->orderBy('cnt_post' ,'DESC')
->limit(999999)
// ->toSql(); ←素のSQL文を書き出せる
->chunk( $this->max_lows, function ($tag_fave) {
foreach ($tag_fave as $key => $row) {
// DB::table('tags')
// ->where('id', $tags->id)
// ->update(['created_at' => $this->ranges['day']]);
var_dump($key, $row );
}
return false; //← これで終わる
});
laravel8 クエリービルダー サブクエリ 複数条件 算術演算 groupBy複数 orderBy DESC混在 生のSQL chank
Categories:
Tags: