2010-07-26 34 views
0

我是Zend框架的新用戶,以及我與Zend的語法化妝的問題。此查詢:怎樣才能讓這個sql查詢在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 

有任何一個能幫助我? ! 謝謝..

+0

您可以格式化查詢以使其更具可讀性嗎? – dwich 2010-07-26 08:55:32

+0

請正確格式化您的SQL – Martin 2010-07-26 08:55:50

回答

2

對於subquerys,你可以用這個例子作爲依據:

... 
$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必須在commments一些例子

而且,請查看Zend Db Expressions.