我正在尝试按模型和制造商名称对库存结果进行分组,显示匹配的项目数量和每个分组的1个结果。话虽如此,我想尝试检索组内的所有库存ID。想知道这是否可行......有什么想法吗?
仅供参考 - 我正在使用Laravel,有问题的行是 - > selectRaw(CambridgeID为CambridgeIDArray)
$getMatchingInventory = DB::table('inventory')
->selectRaw('*, count(*) as groupTotal')
->whereRaw("MATCH(ManufacturerNameMatch, SubCategoryNameMatch, MainCategoryNameMatch, Model_Name, Title_Override, Description_Old) AGAINST ('$final' IN BOOLEAN MODE)")
->selectRaw('CambridgeID as CambridgeIDArray')
->groupBy('Model_Name', 'ManufacturerNameMatch')
->having('Units_OnHand', '>=', '1')
->orderBy('ManufacturerNameMatch')
//->paginate(15);
->get();
答案 0 :(得分:2)
试试这个
$getMatchingInventory = DB::table('inventory')
->select(DB::raw("GROUP_CONCAT(CambridgeID) as `CambridgeIDArray`, count(*) as `groupTotal`"))
->whereRaw("MATCH(ManufacturerNameMatch, SubCategoryNameMatch, MainCategoryNameMatch, Model_Name, Title_Override, Description_Old) AGAINST ('$final' IN BOOLEAN MODE)")
->groupBy('Model_Name', 'ManufacturerNameMatch')
->having('Units_OnHand', '>=', '1')
->orderBy('ManufacturerNameMatch')
->get();
答案 1 :(得分:1)
您应该能够使用GROUP_CONCAT
,请参阅:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
您可以使用指定输出格式选项(例如,SEPARATOR)并根据需要在GROUP_CONCAT
内使用其他字符串操作。
(Fyi,使用原始MySQL,至少在这个问题上,会更容易解析。)