2010-10-22 89 views
0

我有點困惑在這裏,有人可以看看這個查詢,並告訴我我做錯了什麼?非常簡單的MySQL查詢不起作用

SELECT d.* FROM as_downloads d LEFT JOIN as_categories c ON (d.download_category_id = c.category_id) WHERE d.download_category_id != -1 LIMIT 30 

as_downloads表中讀取行,但不參加類別表..

世界上沒有錯誤什麼那麼,我已經在phpMyAdmin和相同的結果測試,這裏的PHP代碼中使用

class Model_Downloads extends ModelType_PDO 
{ 
    public function fetchDownloads($limit) 
    { 
     $p = Registry::get('Config')->Database->prefix; 

     $query = "SELECT d.* FROM ".$p."downloads d LEFT JOIN ".$p."categories c ON d.download_category_id = c.category_id WHERE d.download_category_id != -1 LIMIT :limit"; 
     $this->query = $this->prepare($query); 
     $this->query->bindValue(':limit',$limit,PDO::PARAM_INT); 

     if($this->query->execute()) 
     { 
      return $this->query->fetchAll(PDO::FETCH_CLASS); 
     } 
     return false; 
    } 
} 

回答

1

您的查詢僅從下載表中選擇列 - d.*。你只需要從類別中指定你需要的列。

+0

謝謝,我知道我忽略了一些東西,我認爲如果連接自動選擇整個表。再次感謝。 – RobertPitt 2010-10-22 13:00:44

+0

你真的應該明確地指定你想要的列。否則,架構更改時,現有查詢可能會停止工作。 – 2010-10-22 13:02:11

+0

是的,我知道這一點,他們將被指定,但隨着我的系統仍在進行中,我很快就會獲得基礎知識,並且病態地微調了一切。 – RobertPitt 2010-10-22 13:17:37