2015-07-21 59 views
1
SELECT * FROM 
(SELECT post.* FROM post ORDER BY post.timestamp DESC) as post 
GROUP BY post.topic_id 
ORDER BY post.timestamp DESC, post.position 
LIMIT 15 

當試圖執行上面的查詢時,Phalcon出現以下錯誤。查詢本身在默認的sql上工作正常。PhalconPHP無法解析我的查詢

Syntax error, unexpected token (, near to ' SELECT post.* FROM post ORDER BY post.timestamp DESC) as post GROUP BY post.topic_id ORDER BY post.timestamp DESC, post.position LIMIT 15', when parsing: SELECT * FROM (SELECT post.* FROM post ORDER BY post.timestamp DESC) as post GROUP BY post.topic_id ORDER BY post.timestamp DESC, post.position LIMIT 15 (162) 

使用下面的PHP碼(用於測試):

$sql = <<< QUERY 
    *query* 
QUERY; 

$query = $this->modelsManager->createQuery($sql); 
$result = $query->execute(); 

感謝您的任何幫助。

+0

使用子查詢將無法很好地執行。看看[這篇文章選擇每組一行](http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in- SQL /)。 –

+0

我來看看。謝謝! – tomew

回答

1
  1. 創建視圖,讓已經扭轉排序虛表:

    CREATE VIEW v_latest_posts AS SELECT * FROM後ORDER BY的時間戳降序

  2. 使用視圖中選擇:

    SELECT * FROM v_latest_posts GROUP BY topic_id ORDER BY timestamp DESC,position ASC LIMIT 15

+1

因爲他想要每個主題的最新帖子。你的查詢將給每個主題的隨機文章。 –

+1

謝謝,但我似乎沒有工作。 Phalcons PHQL-Language-Parser現在搜索名爲v_latest_posts的模型。但找到了解決辦法,請看這裏:http://puu.sh/j79B1/c9846608de.png – tomew