gpt4 book ai didi

php - laravel 5.4 中的三个加入和分组

转载 作者:行者123 更新时间:2023-11-28 23:12:14 25 4
gpt4 key购买 nike

你好,我是 laravel 的新手,我需要在三个表之间进行两次连接,然后在另一个表中进行分组计数,然后 < strong>join group by 的结果与two join result。我尝试使用两个查询第一个用于two join 和第二个查询对于 group by 但我不知道如何加入这两个查询。这是我第一次查询三个表:members、members_courses_assign 和 courses

$temp = DB::table('members')
->join('members_courses_assign', 'members.externalPersonKey', '=', 'members_courses_assign.externalPersonKey')
->join('courses', 'members_courses_assign.referenceNumber', '=', 'courses.referenceNumber')->where(['courses.termkey'=>$termK,'members_courses_assign.termkey'=>$termK])->get();

这是我的第二个查询

  $count= DB::table('files')
->select('referenceNumber', DB::raw('count(*) as total'))
->where(['termkey'=>$termK])
->groupBy('referenceNumber')
->get();

然后我需要将第一个结果与第二个结果连接起来,我尝试首先连接第 4 个表,但第 4 个表"file"会产生歧义,因为“referenceNumber”在"file"表中不是唯一的。

最佳答案

如果我明白你想做什么,使用 join() 和 'count' 子查询作为第一个参数,并传递一个 Closure 作为第二个参数指定你的主查询之间的链接并且子查询应该可以工作。

$temp = DB::table('members')
->join('members_courses_assign', 'members.externalPersonKey', '=', 'members_courses_assign.externalPersonKey')
->join('courses', 'members_courses_assign.referenceNumber', '=', 'courses.referenceNumber')
->join(DB::raw('(SELECT COUNT(*) AS count, referenceNumber FROM files WHERE termkey='.$termK.' GROUP BY referenceNumber) FileCount'), function($join)
{
$join->on('courses.referenceNumber', '=', 'FileCount.referenceNumber');
})
->where(['courses.termkey'=>$termK,'members_courses_assign.termkey'=>$termK])
->get();

关于php - laravel 5.4 中的三个加入和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com