2016-04-20 3 views
0

У меня есть 2 таблицы с именем po_head и po_detail.Обновить таблицу, где условие в другой таблице

po_head хранят информацию о PO Status = OPEN (qty remain > 0)/CLOSED (qty remain = 0)

po_detail хранят информацию о том, сколько заказанный и запас прописал.
оба они связаны с po_invoice ...

мне нужно обновить po_status в po_header быть CLOSED IF qty remain in po_detail = 0

примечание:
qty remain = sum(po_detail_qty) from po_detail pd where pd.po_invoice = ph.po_invoice

после создания некоторой функции в контроллере, как это:

function receive(){ 
    $data  = array(); 
    $subtotal = 0; 
    $total = 0; 
    $idnr  = $this->input->post('idtut'); 
    $id_detail = $this->input->post('prDetailKodeBarang'); 
    $merk  = $this->input->post('prDetailMerkId'); 
    $kategori = $this->input->post('prDetailKategoriId'); 
    $qty_receive= $this->input->post('prDetailQtyRcv'); 
    $price  = $this->input->post('prDetailPrice'); 
    $podeid  = $this->input->post('poDetailId'); 
    for($i = 0; $i < count($merk); $i++){ 
     $subtotal = $qty_receive[$i] * $price[$i]; 
     $data[] = array(
         'pr_po_detail_id'  => $podeid[$i], 
         'pr_kode_barang'  => $id_detail[$i], 
         'pr_merk_item_id'  => $merk[$i], 
         'pr_invoice'   => $this->input->post('prheadInvoice'), 
         'pr_kategori_item_id' => $kategori[$i], 
         'pr_detail_qty_receive' => $qty_receive[$i], 
         'pr_detail_price'  => $price[$i], 
        ); 
     $total += $subtotal; 

     $update['po_detail_qty'] = $this->model_po->getKurangStok($podeid[$i],$qty_receive[$i]); 
     $key['po_detail_id'] = $podeid[$i]; 
     $this->model_po->updateData('po_detail',$update,$key); 
    } 
    $this->db->insert_batch('pr_detail', $data); 
    $head = array(
       'pr_invoice'  => $this->input->post('prheadInvoice'), 
       'pr_po_invoice'  => $this->input->post('idtut'), 
       'pr_pengirim'  => $this->input->post('prPengirim'), 
       'pr_total_bayar' => $total, 
       'pr_date'   => $this->input->post('prHeadDate'), 
       'pr_receiver'  => $this->input->post('prHeadCreator'), 
       'pr_status_payment' => $this->input->post('prStatusPayment') 
       ); 
    $this->model_po->create('pr_head', $head); 
    $this->model_po->updateStatusPO($idnr); 
    redirect('po'); 
} 

и это моя модель для статуса обновления PO :

function updateStatusPO($idnr){ 
    $query = (" UPDATE po_head ph SET ph.po_status_po = 'CLOSED' WHERE 
       (SELECT SUM(pd.po_detail_qty) FROM po_detail pd WHERE pd.po_invoice = '".$idnr."') = '0' 
       AND ph.po_invoice = '".$idnr."' 
      "); 
} 

но статус PO не изменяется во время po_detail_qty was "0".

ответ

0

Я использовал обновление с присоединением. Пожалуйста, попробуйте следующее:

UPDATE po_head ph 
inner join po_detail pd on pd.po_invoice = ph.po_invoice 
SET ph.po_status_po = 'CLOSED' WHERE 
       SUM(pd.po_detail_qty) = 0 
       AND ph.po_invoice = '".$idnr."' 
+0

hi dipanwita, спасибо за ваш ответ ... но он не работает – user2236102

0

после того, как я попробовал сто раз, эта ошибка я не выполнить этот запрос

я добавить $ this-> db-> запрос ($ запроса); после запроса $. и все работает нормально. Спасибо вам