laravel - Laravel 从子查询连接数据库查询(合并绑定)
问题描述
我有这样的数据库查询:
$visitor = DB::table('visitor_anonymous')
->join('users', 'visitor_anonymous.host', '=', 'users.host')
->whereBetween('visitor_anonymous.created_at', [$startDate, $endDate])
->select(DB::raw('DATE(visitor_anonymous.created_at) AS date, COUNT(visitor_anonymous.host) AS visitor'))
->groupBy(DB::raw("DATE(visitor_anonymous.created_at)"));
$session = DB::table('visitor_anonymous')
->join('visitor_anonymous_pageviews', 'visitor_anonymous.session_id', '=', 'visitor_anonymous_pageviews.session_id')
->join('users', 'visitor_anonymous.host', '=', 'users.host')
->whereBetween('visitor_anonymous_pageviews.created_at', [$startDate, $endDate])
->select(DB::raw('DATE(visitor_anonymous_pageviews.created_at) AS date, COUNT(visitor_anonymous_pageviews.session_id) AS session'))
->groupBy(DB::raw("DATE(visitor_anonymous_pageviews.created_at), visitor_anonymous.session_id"));
$pageview = DB::table('visitor_anonymous')
->join('visitor_anonymous_pageviews', 'visitor_anonymous.session_id', '=', 'visitor_anonymous_pageviews.session_id')
->join('users', 'visitor_anonymous.host', '=', 'users.host')
->whereBetween('visitor_anonymous_pageviews.created_at', [$startDate, $endDate])
->select(DB::raw('DATE(visitor_anonymous_pageviews.created_at) AS date, sum(visitor_anonymous_pageviews.count) AS pageview'))
->groupBy(DB::raw("DATE(visitor_anonymous_pageviews.created_at)"));
希望这样的结果,但没有奏效。如何像这样加入子查询?
$table = DB::table( DB::raw("({$visitor->toSql()}) as v"))
->leftJoin(DB::raw("({$session->toSql()}) as s"), 'v.date','=','s.date')
->leftJoin(DB::raw("({$pageview->toSql()}) as p"), 'v.date','=','p.date')
->select(DB::raw('v.date, sum(visitor) AS visitor, sum(session) AS session, sum(pageview) AS pageview'))
->groupBy(DB::raw("v.date"))
->mergeBindings($visitor);
请告诉我,解决方案。谢谢
解决方案
推荐阅读
- python - 在使用文件访问时尝试更改对象中的某些值
- python - 安装 YOLOv5 依赖项——torchvision?
- r - 新列包含来自其他 2 列的最少数据
- javascript - 打开新标签页、刷新或关闭浏览器时如何管理 localStorage 和/或 sessionStorage?
- java - 如何在适用于 Android 10+ 的 android studio 中保存 PDF 文档
- python - 在数据框中查找所有匹配的键和值
- javascript - 未捕获的类型错误:无法使用复选框读取 app.js:2 处的 null 属性“addEventListener”
- vue.js - Vuex 为一个特定对象改变存储的键值
- python - 菜单项上的硒访问范围不可选择
- javascript - 我如何将 2 选择器列表居中?