2016-04-20 13 views
0

Ich habe 2 Tabelle mit den Namen po_head und po_detail.Update-Tabelle wo Bedingung in einer anderen Tabelle

po_head speichern Informationen über PO Status = OPEN (qty remain > 0)/CLOSED (qty remain = 0)

po_detail speichern Informationen darüber, wie viele Artikel bestellt und Lager bestellt.
beide mit po_invoice im Zusammenhang ...

Ich brauche po_status in po_header aktualisieren CLOSED IF qty remain in po_detail = 0

Note zu sein: wie diese
qty remain = sum(po_detail_qty) from po_detail pd where pd.po_invoice = ph.po_invoice

nachdem ich create eine Funktion in der Steuerung:

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'); 
} 

und dies ist mein Modell für Update-Status 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."' 
      "); 
} 

aber der Status PO tat nicht ändert, während po_detail_qty was "0".

Antwort

0

Ich habe Update mit Join verwendet. Bitte versuchen Sie dies:

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

Hallo Dipanwita, danke für deine Antwort ... aber es funktioniert nicht – user2236102

0

nachdem ich hundert Mal versucht, ist der Fehler, den ich nicht diese Abfrage

auszuführen hat

i hinzufügen $ this-> db-> query ($ query); nach $ query. und alles läuft gut. Danke dir

Verwandte Themen