ГДЕ РАВНО ВЫБРАТЬ ПОД ЗАПРОС
Я просто хочу знать, как я могу преобразовать этот запрос в красноречивый запрос laravel.
"SELECT * FROM vw_part_supplier
LEFT JOIN purchase_request_detail ON vw_part_supplier.part_supp_id = purchase_request_detail.prd_part_supp_id
WHERE (
part_status = 'ACTIVE'
AND part_supp_id not IN (SELECT prd_part_supp_id FROM purchase_request_detail WHERE prd_pr_id = $id)
AND part_supp_supplier_id = (SELECT pr_supplier_id FROM purchase_request WHERE pr_id = $id)
AND part_prod_grp_id = (SELECT pr_prod_grp_id FROM purchase_request WHERE pr_id = $id)
AND part_supp_ratio!=0)
ORDER BY part_name,part_code,part_subcode";
Я сделал часть, но только до тех пор, пока не вошел. Любая помощь, несомненно, будет оценена по достоинству. Спасибо!
2 ответа
Я это уже решил.
public function getAvailPartsList($pr_id = 0){
$ids = $this->model
->select('pr_supplier_id','pr_prod_grp_id')
->from('purchase_request')
->where('pr_id','=',$pr_id)
->get();
$pr_supplier_id = $ids[0]['pr_supplier_id'];
$pr_prod_grp_id = $ids[0]['pr_prod_grp_id'];
$result = $this->model->select('*')
->from('vw_part_supplier')
->leftJoin('purchase_request_detail', 'vw_part_supplier.part_supp_id','=','purchase_request_detail.prd_part_supp_id')
->where('vw_part_supplier.part_status', '=', 'ACTIVE')
->whereNotIn('vw_part_supplier.part_supp_id', function ($y) use ($pr_id){
$y->select('prd_part_supp_id')
->from('purchase_request_detail')
->where('prd_pr_id', '=', $pr_id);
})
->where('vw_part_supplier.part_supp_supplier_id', '=', $pr_supplier_id)
->where('vw_part_supplier.part_prod_grp_id', '=', $pr_prod_grp_id)
->where('part_supp_ratio','!=',0)
->get();
return $result;
}
В любом случае спасибо за все ваши ответы.
Я считаю, что вы пытались и достигли того момента, в котором нет, что является сложным моментом, но я также считаю, что вы могли бы поискать немного больше для своего ответа.
В любом случае я решу одну строчку за вас, остальные просто следуйте тому же мышлению:
AND part_supp_id not IN (SELECT prd_part_supp_id FROM purchase_request_detail WHERE prd_pr_id = $id)
Проблема, которую я предполагаю, это вложенный выбор, поэтому он вас заблокировал.
->whereNotIn('part_supp_id', function ($query) use($id) {
$query->from("purchase_request_detail")
->where("prd_pr_id", $id)
->select("prd_part_supp_id");
})