SQL:Select 不同但将一列的所有内容添加到不同的结果
SQL: Select distinct but adding all of one column to distinct result
Table 输出:
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 Table:
我的第一个目标是 SELECT DISTINCT
我 table 的 drug_code
。我的问题是 drug_dosage
下的数据不同,但 drug_code
下的数据相同。
所以我需要在下面的 table UI 中做的是在“附加信息”下,我需要编译所有 drug_dosage
并将它们放在一行中:
例如,我的目标是 selecting drug_code
"CFZU",它将 drug_dosage
列为:"<=4 mg/L, <= 3 mg/L"
如何修改下面的代码,以便在同时使用 SELECT DISTINCT
时可以 select 一列的多个?
<td class="p-1"><p class="font-weight-bold m-0">Additional Information:</p>
${drug.drug_dosage}
</td>
你可以使用GROUP_CONCAT
如果您没有使用数据库,请先在 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,
]);
}
Table 输出:
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 Table:
我的第一个目标是 SELECT DISTINCT
我 table 的 drug_code
。我的问题是 drug_dosage
下的数据不同,但 drug_code
下的数据相同。
所以我需要在下面的 table UI 中做的是在“附加信息”下,我需要编译所有 drug_dosage
并将它们放在一行中:
例如,我的目标是 selecting drug_code
"CFZU",它将 drug_dosage
列为:"<=4 mg/L, <= 3 mg/L"
如何修改下面的代码,以便在同时使用 SELECT DISTINCT
时可以 select 一列的多个?
<td class="p-1"><p class="font-weight-bold m-0">Additional Information:</p>
${drug.drug_dosage}
</td>
你可以使用GROUP_CONCAT
如果您没有使用数据库,请先在 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,
]);
}