Как сделать этот SQL-запрос в Zend синтаксисе - PullRequest
0 голосов
/ 26 июля 2010

Я новый пользователь 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

Кто-нибудь может мне помочь?Спасибо! .. * * 1004

1 Ответ

2 голосов
/ 26 июля 2010

Для подзапросов вы можете использовать этот пример в качестве основы:

...
$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 я никогда не пробовал, но на этой странице есть несколько примеров в комментариях

Также взгляните на выражения Zend Db.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...