mysql - 如何在 Zend 语法中进行此 sql 查询

标签 mysql zend-framework

我是 Zend Framework 的新用户,我在使用 Zend 语法进行此查询时遇到问题:

SELECT i.*, k.id as id_key, GROUP_CONCAT(DISTINCT k.nome ORDER BY k.id SEPARATOR " ") as tag, GROUP_CONCAT(DISTINCT f.dimensioni ORDER BY f.id SEPARATOR " | ") as formati
FROM immagine i
LEFT JOIN immagine_has_formato fi ON fi.immagine_codice=i.codice
LEFT JOIN formato f ON f.id=fi.formato_id
LEFT JOIN keyword_has_immagine ki ON ki.immagine_codice=i.codice
LEFT JOIN keyword k ON k.id=ki.keyword_id
WHERE i.libro_codice = '06' AND i.codice IN (
SELECT ki.immagine_codice FROM keyword_has_immagine ki
INNER JOIN keyword k ON k.id=ki.keyword_id
WHERE lower(k.nome) = 'steam'
)
GROUP BY i.codice

有谁可以帮帮我吗? 谢谢!...

最佳答案

对于子查询,您可以使用此示例作为基础:

...
$subselect = $this->select()->setIntegrityCheck(false);
        $subselect->from(array('e'=>'feed_entries'),array('e.id'))
                   ->join(array('f'=>'feeds'),'e.feed_id =f.id','')
                   ->join(array('ec'=>'entries_categorias'),'ec.entry_id =e.id','')
                   ->join(array('c'=>'categorias'),'ec.categoria_id =c.id','')
                   ->where('e.imagem332x332 =?',1)
                   ->where('e.deleted =?',0)
                   ->group('e.id')
                           ->where('c.nome IN(?)',$categories)
                       ->having('COUNT(DISTINCT ec.id) =?',count($categories));

$select = $this->select()->where('id IN ?',$subselect)->order('date DESC')->limit(4);
return $this->fetchAll($select);
...

对于group_concat,我从未尝试过,但是this page评论里有一些例子

此外,请查看 Zend Db Expressions.

关于mysql - 如何在 Zend 语法中进行此 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3333401/

相关文章:

javascript - 在 nodeJS MySql 中发送 DBNull.Value 而不是 'null'

mysql - 使用存储过程更新

mysql - 外键困境

mysql - MYSQL中的触发器根据插入的值更新不同的列

php - 在执行 UNION 查询时,如何让 Zend Db 返回行集而不是数组?

zend-framework - Zend_Db_Stmt 帮助

javascript - Jquery-使用 Ajax 将变量传递给 PHP 的问题

mysql - zend 框架中国际网络应用程序的时区

zend-framework - '"php.exe"' 不被识别为内部或外部命令

PHP - 即时编译器与解释器