我在如何将复杂的 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/