laravel - SQL:选择不同但将所有一列添加到不同的结果
问题描述
表输出:
data: {search_drug: search_drug},
success: function (response){
var tbody="";
$.each(response.all_drugs, function (key, drug) {
tbody+=`
<tr>
<td class="p-1">${drug.drug_name}</td>
<td class="p-1">${drug.drug_code}</td>
<td class="p-1"><p class="font-weight-bold m-0">Additional Information:</p>
${drug.drug_dosage}
</td>
</tr>`;
});
$('tbody').html(tbody) }
控制器:
public function fetchdrug(Request $search_drug){
$filter_drug = $search_drug->input('search_drug');
$all_drugs = HmsBbrKnowledgebaseDrug::distinct('drug_code')
->when(is_null($filter_drug), function ($query) {
$query->where('bbr_drug_id', '>=', 1);
})
//iLike is case insensitive
->when(!empty($filter_drug), function ($query) use ($filter_drug) {
$query->where('drug_name', 'iLIKE', "%$filter_drug%");;
})
->groupBy('bbr_drug_id')
->get();
return response()->json([
'all_drugs'=>$all_drugs,
]);
}
SQL 表:
我的第一个目标是SELECT DISTINCT
我drug_code
的桌子。我的问题是数据不同drug_dosage
但drug_code
相同。
所以我需要在下面的表格 UI 中做的是,在“附加信息”下,我需要编译所有drug_dosage
并将它们放在一行中:
例如,当我选择drug_code
“CFZU”时,它会列出drug_dosage
如下:“<=4 mg/L, <=3 mg/L”
如何修改下面的代码,以便SELECT DISTINCT
在同时使用时可以选择一列中的多个?
<td class="p-1"><p class="font-weight-bold m-0">Additional Information:</p>
${drug.drug_dosage}
</td>
解决方案
您可以使用GROUP_CONCAT
如果您没有使用 DB,请先在 laravel 中使用它
public function fetchdrug(Request $search_drug){
$filter_drug = $search_drug->input('search_drug');
$all_drugs = HmsBbrKnowledgebaseDrug::select('drug_code', 'drug_name', DB::raw("GROUP_CONCAT(drug_dosageSEPARATOR ', ') as other_detail"))
->when(is_null($filter_drug), function ($query) {
$query->where('bbr_drug_id', '>=', 1);
})
//iLike is case insensitive
->when(!empty($filter_drug), function ($query) use ($filter_drug) {
$query->where('drug_name', 'iLIKE', "%$filter_drug%");;
})
->groupBy('drug_code')
->groupBy('bbr_drug_id')
->get();
return response()->json([
'all_drugs'=>$all_drugs,
]);
}
推荐阅读
- ansible - no_device:是的,在使用 Ansible 创建 ami 时不起作用
- ruby-on-rails - 自动化生产页面创建
- c++ - QObject::connect: 需要括号,信号 QSerialPort::readyRead in ..\voltage_sensor\dialop.cpp:41
- python - Tkinter 和 Socket 之间的链接
- sed - 在一行的一部分中添加/替换字符
- c# - 如何通过网络将 WinForms DataGridView 连接到 PostgreSQL DB
- server - 具有多个 DHCP 服务器和一个 Cisco 第 3 层交换机的 Cisco 路由器
- python - 修补模拟类的方法
- xml - 解析多个 XML 节点值以导出到 CSV
- javascript - 如何通过复选框输入动态更新模型并立即渲染地图更改