我在'答案表'中的记录:
**id question_id answer**
20 12 app/Http/routes.ph
21 13 uri
22 13 closure
23 14 controller
24 15 class name
25 15 App\Http\Controllers
26 16 for displayh
我的代码检索数据:
$qas= DB::table('answers')
->groupBy('question_id')
->get();
dump($qas);
}
我只获得5条记录而不是7条记录;其他2条记录在哪里? 它的作用类似于不同的功能,这不是我的意图。
如何编写代码以获取按'question_id'分组的所有7条记录?
答案 0 :(得分:0)
理解GroupBy
的概念,它的意思是,它会将相同的项目视为一个,例如14, 14-> 14 | 13,13-> 13
如果你想得到所有答案,那么你必须写这个
DB::table('answers')->get();
<强>被修改强>
distinct和group by将在您的情况下执行相同的操作。 如果您可以更详细地解释您的问题,那么可能有解决方案。
答案 1 :(得分:0)
你说的是7行的结果,但那不是分组。也许你在谈论订购而不是分组?如果是这样,您需要使用->orderBy('question_id', 'asc')
,这将为您提供7行,按question_id
排序。
答案 2 :(得分:0)
在SQL中,当您需要以某种方式聚合结果(例如SUM或AVERAGE数据)时,GROUP BY子句非常有用。
您的情况不同,您不需要使用某些功能汇总数据,您只需要一个简单而扁平的结果列表以外的其他数据结构。
根据您的需要,您应该避免使用GROUP BY,并以编程方式对代码中的数据进行重新排序。