php - 使用包含 GROUP_CONCAT 的 Zend DB 编写子查询

标签 php mysql zend-framework zend-db

我在如何将复杂的 SELECT 重写为 Zend 语法时遇到问题。 SELECT 与 SUBSELECT 和 GROUP_CONCAT 一样使其变得更加复杂。

select * from Atrybutypowiazania as ap
left join (
    select a.id_gr,
    group_concat(a.nazwa SEPARATOR ', ') 
    from Atrybutygrupy as ag
    left join Atrybuty a on a.id_gr = ag.id
    where ag.jedn_miary = 'rozmiar'
    group by ag.id 
) qqq on qqq.id_gr = ap.id_gr
left join Produkty p on p.id = ap.id_og
where qqq.id_gr <> ''
group by ap.id_og

我尝试将纯 SELECT 插入查询

$sql = "select a.id_gr,
            group_concat(a.nazwa SEPARATOR ', ') 
            from Atrybutygrupy as ag
            left join Atrybuty a on a.id_gr = ag.id
            where ag.jedn_miary = 'rozmiar'
            group by ag.id ";

$select = $this->db->select()
                ->from(array('ap' => 'Atrybutypowiazania'))
                ->joinleft(array($sql => 'qqq'), 'qqq.id_gr = ap.id_gr')
                ->joinleft(array('p' => 'Produkty'), 'p.id = ap.id_og')
                ->where($where)
                ->group('ap.id_og')
                ;

        $result = $this->db->fetchAll($select);

但是不起作用

最佳答案

我找到了解决方案:

$sql = $this->db->select()
        ->from(array('ag' => 'Atrybutygrupy'), array('idgr' => 'a.id_gr', 'myRozmiary' => new Zend_Db_Expr('GROUP_CONCAT(a.nazwa SEPARATOR ", ")')))
        ->joinleft(array('a' => 'Atrybuty'), 'a.id_gr = ag.id' )
        ->where($where1)
        ->group('ag.id');

$select = $this->db->select()
        ->from(array('ap' => 'Atrybutypowiazania'))
        ->joinleft(array('qqq' => $sql), 'qqq.id_gr = ap.id_gr')
        ->joinleft(array('p' => 'Produkty'), 'p.id = ap.id_og')
        ->where($where)
        ->group('ap.id_og')
        ;

$result = $this->db->fetchAll($select);

关于php - 使用包含 GROUP_CONCAT 的 Zend DB 编写子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37599010/

相关文章:

mysql - 从远程计算机访问 MYSQL

php - ZF2 - Controller 中多个操作的相同 View 文件

php - PHP 7.4 中的循环引用

单击链接时 PHP 执行文件两次

php - 写入数据库失败

php - 保存网页时图像未保存!

php - 如何以应用程序仍可读的方式安全地存储密码?

mysql - sql删除where之后的所有行

php - 使用 Zend Framework 从 1and1 smtp 服务器发送电子邮件

生成图标的PHP代码