там я ищу решение проблемы, с которой я столкнулся в zend apllication,
Я использую zf 1.12 и php 5.3 с моим sql,
Вот мой запрос, который отлично работает в My SQL
SELECT usermaster.*, (select count(projecttouser.u_id) from projecttouser where usermaster.id=projecttouser.u_id ) as proj, (select count(tasktotarget.assigned_to) from tasktotarget where usermaster.id=tasktotarget.assigned_to ) as target, (select count(tasktotarget.assigned_to) from tasktotarget where usermaster.id=tasktotarget.assigned_to AND tasktotarget.is_active = 1 ) as active from usermaster group by usermaster.id
Это дает отличный результат, который я хотел, но в своем sql
теперь моя проблема в том, что мне нужно преобразовать этот запрос в запрос среды рамки zend,
который является чем-то отличным от моего формата sql,
я пробовал что-то, как следует,
$psub=$this->select() ->setIntegrityCheck(false) ->from(array('p'=>'projecttouser'),array('count(p.u_id) as count')) ->join(array('i'=>'usermaster'),'p.u_id=i.id') ->where('i.id=p.u_id'); $tsub=$this->select() ->setIntegrityCheck(false) ->from(array('t'=>'tasktotarget'),array('count(t.assigned_to) as tcount')) ->where('usermaster.id=tasktotarget.assigned_to'); $tasub=$this->select() ->setIntegrityCheck(false) ->from(array('ta'=>'tasktotarget'),array('count(ta.assigned_to) as tacount')) ->where('usermaster.id=tasktotarget.assigned_to AND tasktotarget.is_active = 1 '); $sql=$this->select() ->setIntegrityCheck(false) ->from(array('u'=>'usermaster',$psub,$tsub,$tasub)) ->group('u.id') ->order($order_by . ' ' . $order) ->where('u.is_delete=false'); $resultSet = $this->fetchAll($sql); return $resultSet;
поэтому, если кто-нибудь может помочь мне создать и отформатировать запрос, который будет очень полезен
Попробуй это :
$psub=$this->db->select() ->setIntegrityCheck(false) ->from(array('p'=>'projecttouser'),array('count(p.u_id) as count')) //->join(array('i'=>'usermaster'),'p.u_id=i.id') // no need for this join ->where('usermaster.id=projecttouser.u_id'); $tsub=$this->db->select() ->setIntegrityCheck(false) ->from(array('t'=>'tasktotarget'),array('count(t.assigned_to) as tcount')) ->where('usermaster.id=tasktotarget.assigned_to'); $tasub=$this->db->select() ->setIntegrityCheck(false) ->from(array('ta'=>'tasktotarget'),array('count(ta.assigned_to) as tacount')) ->where('usermaster.id=tasktotarget.assigned_to AND tasktotarget.is_active = 1 '); $sql=$this->db->select() ->setIntegrityCheck(false) ->from(array('u'=>'usermaster'), array('usermaster.*', 'proj' => new Zend_Db_Expr('(' . $psub . ')'), 'target' => new Zend_Db_Expr('(' . $tsub . ')'), 'active' => new Zend_Db_Expr('(' . $tasub . ')'))) ->group('u.id') //->order($order_by . ' ' . $order) ->where('u.is_delete=false'); $resultSet = $this->fetchAll($sql); return $resultSet;
Док: http://framework.zend.com/manual/1.12/en/zend.db.select.html