gpt4 book ai didi

php - 子查询成为 Magento 中 Mysql 查询中的列

转载 作者:行者123 更新时间:2023-11-29 10:32:33 25 4
gpt4 key购买 nike

我在 Magento ($Collection) 中有一个查询,在其中我加入了一个表以获得我想要的结果。

这是我的$Collection

protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$stmp = "(SELECT GROUP_CONCAT(comment SEPARATOR '----' ) FROM mgmx_sales_flat_invoice_comment a WHERE a.parent_id = `main_table`.`entity_id` group by parent_id)";
$collection->getSelect()->join( array('a'=> mgmx_sales_flat_invoice_comment), 'a.parent_id = main_table.entity_id', $stmp);


$this->setCollection($collection);
echo $collection->getSelect();die();
return parent::_prepareCollection();
}

这个$Collection,如果你注意到我重复了它的话。它将打印此查询。

SELECT 
`main_table`.*,
(SELECT
GROUP_CONCAT
(comment SEPARATOR '----' )
FROM
mgmx_sales_flat_invoice_comment a
WHERE
a.parent_id = main_table`.`entity_id
GROUP BY
parent_id)
FROM
`mgmx_sales_flat_invoice_grid`
AS
`main_table`
INNER JOIN
`mgmx_sales_flat_invoice_comment`
AS
`a`
ON
a.parent_id = main_table.entity_id

另一方面,如果我可以删除其中的一些“东西”(例如“`”),那么该查询就可以正常工作。

以下是逐步发生的事情。

  1. 在 Mysql 中运行查询时,它将返回错误

1054 - Unknown column '(SELECT GROUP_CONCAT(comment SEPARATOR '----' ) FROM mgmx_sales_flat_invoice_comment a WHERE a.parent_id = main_table.entity_id group by parent_id)' in 'field list'

如果我像下面一样删除(SELECT 语句)之前和之后的 ``

SELECT `main_table`.*, 
(SELECT
GROUP_CONCAT(comment SEPARATOR '----' )
FROM
mgmx_sales_flat_invoice_comment a
WHERE a.parent_id = main_table`.`entity_id
group by parent_id)
FROM `mgmx_sales_flat_invoice_grid`
AS `main_table`
INNER JOIN `mgmx_sales_flat_invoice_comment`
AS `a` ON a.parent_id = main_table.entity_id

它将显示此错误

right syntax to use near '.entity_id group by parent_id) FROM mgmx_sales_flat_invoice_grid AS `main_ta' at line 1

因为这个

WHERE a.parent_id = main_table`.`entity_id 

如何删除该 `` 以及如何按最终的 $collection 查询进行分组。

最佳答案

此处,GROUP_CONCAT 函数中的分隔符 ---- 产生了问题。

如果您使用不同的分隔符,例如====,那么问题就会得到解决。

喜欢,

$stmp = "(SELECT GROUP_CONCAT(comment SEPARATOR '====' ) FROM mgmx_sales_flat_invoice_comment a WHERE a.parent_id = `main_table`.`entity_id` group by parent_id)";

希望这有帮助!

关于php - 子查询成为 Magento 中 Mysql 查询中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47119430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com