2013-04-16 115 views
0

我真的很努力如何實現這一點,並希望有人能幫助我。我有現有的功能和查詢:更新一個表,其中發現在另一個表中的記錄

public function setStockAndPrice($product_id) { 
    $query = $this->db->query('UPDATE ' . DB_PREFIX . 'product SET quantity = 0, price = 0.00 WHERE product_id = ' . (int)$product_id) 
}

這工作,但將所有產品零當我真正希望它唯一的集產品爲零時該產品的另一個表存在。

即,在解釋性方面:

public function setStockAndPrice($product_id) { 
    $query = $this->db->query('UPDATE ' . DB_PREFIX . 'product SET quantity = 0, price = 0.00 WHERE product_id = ' . (int)$product_id AND product_id exists in CustomerProducts) 
}

我不是太子港既成事實與連接,但我不知道如果我甚至需要使用的查詢,似乎比這更簡單的一個在這裏加入。

任何人都可以指向正確的方向嗎?

謝謝。

羅布

回答

2
public function setStockAndPrice($product_id) { 
    $query = $this->db->query('UPDATE ' . DB_PREFIX . 'product SET quantity = 0, price = 0.00 WHERE product_id = ' . (int)$product_id ." AND product_id =(select DISTINCT(product_id) from CustomerProducts where product_id= $product_id)") 
    } 

這可能工作。

+0

非常感謝您的回覆。我嘗試執行,但它給出了錯誤 - 語法錯誤,意外的'='。對不起 - 有什麼想法? – Rob

+0

editted我的答案,你需要把「before and..check now。 – saveATcode

+0

再次感謝你,但再次抱歉 - 而這次代碼運行,當它到目前爲止,它出現了這個錯誤: PHP注意:錯誤:子查詢返回多於一行
錯誤編號:1242
更新產品SET數量= 0,價格= 0.00 WHERE product_id = 4392 AND product_id =(從customerProducts where product_id = 4392中選擇product_id)位於/ home/sites/opencart/dev/system/database/mysql.php on line 49 我不確定它爲什麼返回多行,但不管它有多少記錄存在於CustomerProducts表中,只要它存在就更新它,如果存在, t如果不是。 – Rob

0

使用此工具將爲您工作不分配db.product並確保您在字符串中編寫查詢然後執行。

你可以看到你的查詢,通過刪除評論

public function setStockAndPrice($product_id) { 
    $query_string = "UPDATE " . DB_PREFIX . ".product SET quantity = '0', price = '0.00' WHERE product_id = '$product_id'"; 

    // echo "Query : " . $query_string; 

    $query = $this->db->query($query_string); 
} 
0
public function setStockAndPrice($product_id) { 
     $query = $this->db->query('UPDATE ' . DB_PREFIX . '.product p, ' . DB_PREFIX . '.CustomerProducts cp SET p.quantity = 0, p.price = 0.00 WHERE p.product_id = ' . (int)$product_id . ' AND p.product_id = cp.product_id'); 
    } 
相關問題