我的数据库结构如下:
表:用户
Cache-Control
表:文章
id | username | email | password | status
表:分析
id | user_id(fk) | title | other | status
现在我想要所有文章,但我也想要 analytics 表中的数据。我想要来自Session的总和大于200的分析的所有行GROUP BY文章ID。
我的表现如下:
id | user_id | article_id(fk) | session | revenue | country_code
但是在LEFT JOIN中放入以下条件后
$articles = Article::selectRaw('articles.*, sum(analytics.revenue) as sum, IF(Sum(analytics.sessions) >= 200, Sum(analytics.sessions), 0) AS sum_sessions
->join('users', 'users.id', '=', 'articles.user_id')
->leftJoin('analytics', function ($join) {
$join->on('analytics.article_id', '=', 'articles.id')
->on('analytics.user_id', '=', 'users.id')
->where('users.status','!=', '3')
->where('analytics.country_code','=', 'US');
})
->where('articles.status', 4)
->groupBy('articles.id')
->orderBy('articles.created_at', 'DESC')
->get();
结果没有显示应该如此。
所以我想要做的是,只有当两个表中都出现常见结果时才会将条件应用于LEFT JOIN,而不是只显示左表的结果。