如何在Zend模型中的JOIN LEFT中编写SELECT查询? 例如,如何将以下mysql查询转换为zend模型查询
LEFT JOIN
(SELECT count(*) as game_count,topic_id,time as g_time from games_list WHERE type < 3 GROUP BY topic_id) t3
ON chapter_list.id=t3.topic_id
我想使用以下zend查询添加转换后的查询,我需要上述查询中的game_count,结果如下。
$query = $this->select()
->setIntegrityCheck(false)
->from(array('a' => 'chapter_list'), array('subtopic_id as topic','id as topic_id','grade','chapter_no as chapter','if(file_status=1,1,0) as ppt)','CONCAT("http://mysite.com?t=",subtopic_id) as link'))
->joinLeft(array('b' => 'subject_list'), 'a.subject = b.subject_id', array());
return $this->fetchAll($query)->toArray();
答案 0 :(得分:3)
最后我明白了,
$subquery1= $this->select()
->setIntegrityCheck(false)
->from('games_list', array('count(*) as game_count','topic_id','time as g_time'))
->where('type<?', 3)
->group('topic_id');
//main query
$query = $this->select()
->setIntegrityCheck(false)
->from(array('a' => 'chapter_list'), array('subtopic_id as topic','id as topic_id','grade','chapter_no as chapter','if(file_status=1,1,0) as ppt)','CONCAT("http://eskool.com/learn?t=",subtopic_id) as link'))
->joinLeft(array('b' => 'subject_list'), 'a.subject = b.subject_id', array())
->joinLeft(array('c' => $subquery1), 'a.id = c.topic_id', array('IFNULL(game_count,0)','g_time'))
return $this->fetchAll($query)->toArray();