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,
    ]);
}