首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Zend MySQL: Where子句中的未知列-当使用GROUP_CONCAT()

Zend MySQL: Where子句中的未知列-当使用GROUP_CONCAT()
EN

Stack Overflow用户
提问于 2013-02-07 10:50:29
回答 3查看 2.7K关注 0票数 0

在Magento中,我使用Zend创建对group_concat()的查询,将表值放入一个名为“网站”的字段中。

在添加where子句之前,查询工作正常。

代码语言:javascript
代码运行次数:0
运行
复制
SELECT
  `main_table`.*,
  GROUP_CONCAT(website.website_id) AS `websites`
FROM
  `megamenu_entity` AS `main_table`
   LEFT JOIN `megamenu_website` AS `website`
   ON main_table.entity_id = website.megamenu_id
WHERE
  (websites = '1')
GROUP BY `main_table`.`entity_id`

这就产生了错误:

SQLSTATE42S22:未找到列:“where子句”中的1054个未知列“网站”

为什么会这样呢?有人能帮我解决这个问题吗?理想情况下使用Zend。我现在就是这么做的。

代码语言:javascript
代码运行次数:0
运行
复制
$collection->getSelect()->joinLeft(
  array('website' => $collection->getTable('megamenu/megamenu_website')),
  "main_table.entity_id = website.megamenu_id",
  array('websites' => new Zend_Db_Expr('GROUP_CONCAT(website.website_id)'))
)->group('main_table.entity_id');

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-07 10:56:57

您的WHERE子句不会识别列别名。列别名可用于GROUP BYORDER BYHAVING子句。

更新查询以使用原始列名,如:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT
  `main_table`.*,
  GROUP_CONCAT(website.website_id) AS `websites`
FROM
  `megamenu_entity` AS `main_table`
   LEFT JOIN `megamenu_website` AS `website`
   ON main_table.entity_id = website.megamenu_id
WHERE
  (website.website_id = '1')
GROUP BY `main_table`.`entity_id`
票数 1
EN

Stack Overflow用户

发布于 2013-02-07 10:57:30

请试试下面的代码

代码语言:javascript
代码运行次数:0
运行
复制
SELECT * FROM 
(                     
SELECT
`main_table`.*,
GROUP_CONCAT(website.website_id) AS `websites`
FROM
`megamenu_entity` AS `main_table`
LEFT JOIN `megamenu_website` AS `website`
ON main_table.entity_id = website.megamenu_id ) E
WHERE
(E.websites = '1')
GROUP BY `main_table`.`entity_id`
票数 0
EN

Stack Overflow用户

发布于 2013-02-14 05:24:55

试着查询..。

代码语言:javascript
代码运行次数:0
运行
复制
SELECT
  `main_table`.*,
  GROUP_CONCAT(website.website_id) AS `websites`
FROM
  `megamenu_entity` AS `main_table`
   LEFT JOIN `megamenu_website` AS `website`
   ON main_table.entity_id = website.megamenu_id
WHERE
  ((GROUP_CONCAT(website.website_id)) = '1')
GROUP BY `main_table`.`entity_id`

您的查询不起作用,因为在组之前执行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14749292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档