2015-05-09 66 views
0

我試圖解決我的問題,因爲2小時後,仍然沒有任何解決方案。也許有人會看到我做錯了什麼。 我想要做的是使用zend框架從數據庫中選擇行。 這是什麼查詢我想選擇:從數據庫中加入Zend DB SELECT

SELECT * FROM `products_stock` JOIN `options_stock_values` ON `options_stock_values`.`stock_id` = `products_stock`.`stock_id` WHERE `product_id` = 119 

這是一個簡單加入的完美的作品在phpMyAdmin,但我在我的PHP代碼不能這樣想選擇此項。

 $select = $this->entity("ProductsStock")->select(); 
     $select->join('options_stock_values','options_stock_values.stock_id = products_stock.stock_id',array()); 
     $select->where("product_id = ?", $this->stock->product_id); 
     $select->where("extended = ?", 1); 
     $rowset = $this->entity("ProductsStock")->fetchAll($select); 

     return $rowset; 

這就是我試圖從數據庫中選擇我的行的方式。我從正常工作的實體中選擇ProductsStock。但是,當我將JOIN函數添加到我的查詢中時,它甚至會忽略WHERE語句,並期望這一行有多行。

例如, 有沒有JOIN的數據庫查詢我得到兩行(我期待他們),但是當我添加JOIN與options_stock_values表時,它給了我像20行沒有來自第二表的列的東西。

它只是從第一個表(ProductsStock)返回20行,而不是來自ProductsStock的兩行,與OptionsStockValues和第二個表中的列連接。

我認爲我的php代碼看起來很好,但也許我做了錯誤的事情嗎?任何人都可以幫助我,甚至給我小建議嗎?

+0

你能否提一下zend框架版本? – ashish

回答

0

我建議,包括在FROM子句中的選擇對象:

$select = $this->entity("ProductsStock")->select(); 
$select->from(array('p'=>'products_stock'),array('*')) 
    ->join(array('o'=>'options_stock_values'),'p.stock_id=o.stock_id',array('*')) 
    ->where('product_id = ?',119); 

沒有看到你的表中的數據,我不知道你會得到你所尋求的結果,但這個代碼表示SQL你在問題的頂部提供。