【问题标题】:GROUP concat with mysql join tablesGROUP concat 与 mysql 连接表
【发布时间】:2017-07-25 02:32:59
【问题描述】:

我需要加入 2 个表来获取数据,并且我还需要使用 SELECT GROUP CONCAT。当我加入 1 个表时我工作正常,但是当我尝试加入三个表时,值会重复。请指教。

下面是我的查询

     $data = DB::table('festivals')
    ->join('namedesgs', 'festivals.id', '=', 'namedesgs.festival')
     ->join('vehicles', 'festivals.id', '=', 'vehicles.festival')
    ->select(DB::raw(" GROUP_CONCAT(vehicles.role SEPARATOR '\n') as role,GROUP_CONCAT(vehicles.size SEPARATOR '\n') as size,festivals.id,festivals.ref_no as ref_no, festivals.camping,festivals.tour_mgr_name,festivals.email,festivals.mobile,festivals.name_address, GROUP_CONCAT(namedesgs.name SEPARATOR '\n') as names,GROUP_CONCAT(namedesgs.designation SEPARATOR '\n') as designations"))
    ->groupBy('festivals.id')
    ->get();

【问题讨论】:

  • 第三个连接在哪里?
  • @rahul_m 抱歉,它应该是 2 个连接。我会更新我的问题。它适用于第一次加入

标签: php mysql laravel join


【解决方案1】:

试试leftjoin

$data = DB::table('festivals')
->leftjoin('namedesgs', 'festivals.id', '=', 'namedesgs.festival')
->leftjoin('vehicles', 'festivals.id', '=', 'vehicles.festival')

如果它仍然没有给出您期望的结果,请在此处阅读有关不同联接的更多信息以及它们将为您提供的结果:What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?

【讨论】:

    【解决方案2】:

    好像您的一张桌子有多个相同的festival.id 条目。 这导致您有多个相同的festival.id 行,最终您的 group_concat 中有重复的项目。

    所以首先检查我上面提到的是否真的应该发生。

    如果它应该尝试将DISTINCT 添加到您的组连接中:

     $data = DB::table('festivals')
        ->join('namedesgs', 'festivals.id', '=', 'namedesgs.festival')
         ->join('vehicles', 'festivals.id', '=', 'vehicles.festival')
        ->select(DB::raw(" GROUP_CONCAT(DISTINCT vehicles.role SEPARATOR '\n') as role,GROUP_CONCAT(DISTINCT vehicles.size SEPARATOR '\n') as size,festivals.id,festivals.ref_no as ref_no, festivals.camping,festivals.tour_mgr_name,festivals.email,festivals.mobile,festivals.name_address, GROUP_CONCAT(DISTINCT namedesgs.name SEPARATOR '\n') as names,GROUP_CONCAT(DISTINCT namedesgs.designation SEPARATOR '\n') as designations"))
        ->groupBy('festivals.id')
        ->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 2019-02-11
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多