2017-03-05 169 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

它的工作原理。謝謝 –