2012-12-10 66 views
1

我收到一个MySQL错误这个代码ExpressionEngine 1.6.4(很老的版本)ExpressionEngine查询模块和订购SQL UNION

{exp:query limit="10" paginate="bottom" 
    sql="SELECT 'gallery' AS `content_type`, `cat_id` AS `entry_id`, `recent_entry_date` AS `entry_date` 
     FROM `exp_gallery_categories` 
     WHERE `gallery_id` = 9 AND total_files > 0 
     UNION 
     SELECT 'video' AS `content_type`, `entry_id`, `entry_date` 
     FROM `exp_weblog_titles` 
     WHERE `weblog_id` = 6 ORDER BY `entry_date` DESC" 

    } 
<p>{content_type} - {entry_id} - {entry_date format="%d %F %Y"}</p> 
{paginate}{pagination_links}{/paginate} 
{/exp:query} 

的MySQL返回此:

MySQL ERROR: Error Number: 1054 
Description: Unknown column 'entry_date' in 'order clause' 
Query: SELECT COUNT(*) AS count FROM `exp_gallery_categories` WHERE `gallery_id` = 9 AND total_files > 0 UNION SELECT COUNT(*) AS count FROM `exp_weblog_titles` WHERE `weblog_id` = 6 ORDER BY `entry_date` DESC 

似乎像EE在MySQL之前修改我的查询并使其失败(在SQL客户端上,这可以顺利运行)。

+0

FYI:现在有一个EE具体的S大头钉交换站点:http://expressionengine.stackexchange.com。您可以在那里发布未来EE相关的问题。 –

+0

如果我删除'{paginate} {pagination_links} {/ paginate}'一切正常,但我得到所有结果并失去分页。 – Angus

回答

0

我假设您的选择查询工作。尝试下面:

sql="SELECT * FROM 
     (SELECT gallery AS content_type, cat_id AS entry_id, 
      recent_entry_date AS entry_date 
      FROM exp_gallery_categories 
      WHERE gallery_id = 9 AND total_files > 0 
      UNION 
      SELECT video AS content_type, entry_id, entry_date 
      FROM exp_weblog_titles 
      WHERE weblog_id= 6 
     ) AS TEMP 
     ORDER BY entry_date DESC" 

编辑:统计查询:

  SELECT COUNT(*) AS count 
     FROM 
      (SELECT COUNT(*) AS count, 
       recent_entry_date AS entry_date 
       FROM exp_gallery_categories 
       WHERE gallery_id = 9 AND total_files > 0 
       UNION 
       SELECT COUNT(*) AS count, 
       entry_date 
       FROM exp_weblog_titles 
       WHERE weblog_id = 6 
      ) AS TEMP 
     ORDER BY entry_date DESC 
+0

同样的错误,但更改结果查询: 查询:SELECT COUNT(*)AS count FROM(SELECT COUNT(*)AS count FROM'exp_gallery_categories' WHERE'gallery_id' = 9 AND total_files> 0 UNION SELECT COUNT(*)AS count FROM 'exp_weblog_titles' WHERE'weblog_id' = 6)作为TEMP ORDER BY'entry_date' DESC – Angus

+0

@Angus有两个问题:1.你的单个select查询是否正常运行? 2.尝试删除查询中的所有引号,因为看起来不像单引号并尝试(我更新了答案)? –

+0

@Angus在你的计数查询中,我看到你从选择列表中删除了'entry_date',因此它给出了正确的错误。我发布了修改后的查询。请尝试。 –