我需要在我的第一个表上连接多个表,所有表都具有相同的行数并完美地连接。但是,除了添加的日期之外,加入最后一个包含许多行的表格,因此它会将我的数据复制到每个用户的月数。是否可以只在其中一条线上加入。哪一个没关系。
$rekeninge = DB::connection('odbc')
->table($this->mgk . '.D000M00L')
->leftJoin($this->div . '.D050M00P', $this->div . '.D050M00P.RKNR', '=', $this->mgk . '.D000M00L.RKNR')
->leftJoin($this->mgk . '.VFDIND00P', $this->mgk . '.VFDIND00P.F06', '=', $this->mgk . '.D000M00L.RKNR')
->leftJoin($this->mgk . '.VINDEXP', $this->mgk . '.VINDEXP.VNAAM', '=', $this->mgk . '.VFDIND00P.VFDVELDID')
->where([
'F02' => 'A',
'F165' => 'D'
])
->get();
提前谢谢
答案 0 :(得分:1)
您需要group
结果by
其中一列:
https://laravel.com/docs/5.4/queries#ordering-grouping-limit-and-offset
所以你的查询最终会是这样的:
$rekeninge = DB::connection('odbc')
->table($this->mgk . '.D000M00L')
->leftJoin($this->div . '.D050M00P', $this->div . '.D050M00P.RKNR', '=', $this->mgk . '.D000M00L.RKNR')
->leftJoin($this->mgk . '.VFDIND00P', $this->mgk . '.VFDIND00P.F06', '=', $this->mgk . '.D000M00L.RKNR')
->leftJoin($this->mgk . '.VINDEXP', $this->mgk . '.VINDEXP.VNAAM', '=', $this->mgk . '.VFDIND00P.VFDVELDID')
->where([
'F02' => 'A',
'F165' => 'D'
])
->groupBy('month')
->get();