2017-03-05 142 views
0

我需要连接2个表来获取数据,并使用SELECT GROUP CONCAT连接。我工作的很好,当我加入1表,但当我试图加入三个表值重复。请指教 。GROUP连接mysql连接表

下面

是我的查询

 $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(); 
+0

其中第三加入? – rahulsm

+0

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

回答

1

似乎有一个表格有多个条目为同一个festival.id。 这导致你有相同的festival.id多行,并最终你有你的group_concat重复的项目。

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

如果它应该再尝试加入DISTINCT到组CONCAT:

$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(); 
+0

它的工作原理。谢谢 –