在Magento中,我使用Zend创建对group_concat()的查询,将表值放入一个名为“网站”的字段中。
在添加where子句之前,查询工作正常。
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。我现在就是这么做的。
$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');
谢谢
发布于 2013-02-07 10:56:57
您的WHERE
子句不会识别列别名。列别名可用于GROUP BY
、ORDER BY
和HAVING
子句。
更新查询以使用原始列名,如:
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`
发布于 2013-02-07 10:57:30
请试试下面的代码
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`
发布于 2013-02-14 05:24:55
试着查询..。
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`
您的查询不起作用,因为在组之前执行。
https://stackoverflow.com/questions/14749292
复制相似问题