这是我当前查询从表corporations
,jobs
,corp_networks
和candidates
获取数据。
$sqlCandSkills = DB::table('corporations')
->join('jobs', 'corporations.corp_id', '=', 'jobs.corp_id')
->join('corp_logos', 'corp_logos.corp_id', '=', 'corporations.corp_id')
->join('candidates', 'corporations.corp_id', '=', 'candidates.corp_id')
->join('corp_networks', 'corporations.corp_id', '=', 'corp_networks.participation_corp_id')
->where([
'corp_networks.owning_corp_id' => $this->corp->corp_id,
'corp_networks.status' => "Accepted"
])
->orwhere([
'corporations.corp_id' => $this->corp->corp_id
])
->where('candidates.is_available', '=', 0)->get();
我需要在此添加验证查询,因为我从上面的查询中获取了多行相同的数据。
for($i=0 ; $i<sizeof($skillsArray); $i++){
$value= $skillsArray[$i];
echo($value);
$jobDetails = DB::select(
'SELECT * FROM jobs WHERE job_technical_requirements LIKE "%'.$value.'%" AND job_status = 1 INNER JOIN '
);
}
以上查询提供了所有数据,但我还需要执行上述检查。 我正在做第二个查询,将值数组与列中的csv值进行比较。 现在我需要将所有这些变成一个结果。 我需要在sql查询或laravel查询中执行此操作。
答案 0 :(得分:0)
你可以使用groupBy
$sqlCandSkills = DB::table('corporations')
->distinct()
->join('candidates', 'corporations.corp_id', '=', 'candidates.corp_id')
->join('corp_networks', 'corporations.corp_id', '=', 'corp_networks.participation_corp_id')
->where([
'corp_networks.owning_corp_id' => $this->corp->corp_id,
'corp_networks.status' => "Accepted"
])
->orwhere([
'corporations.corp_id' => $this->corp->corp_id
])
->where('candidates.is_available', '=', 0)
->groupBy(array(
'corporations.corp_id',
'corp_networks.participation_corp_id',
'corp_networks.owning_corp_id'
))
->get('corporations.corp_id');