我正在使用zend。我在主页中实现了特色产品。现在我想在每个产品下显示评论。可能会或可能不会对所有产品给出评论。我需要使用查询来获取具有评论评级但也没有评论评级的产品。
以下是我的代码,
public function funFutureProduct($option = array())
{
$start = isset($option['start']) ? $option['start'] : 0;
$limit = isset($option['limit']) ? $option['limit'] : Zend_Registry::get("featured_prod_row_length");
$oDb=Zend_Registry::get("db");
$list_select = $oDb->select()
->from(array('p'=>'product'), array('p.*'))
->join(array('m'=>'manufacturers'),'p.manufacturer_id = m.manufacturer_id', array("manufacture_name"=>'m.name'))
->join(array('s'=>'category'),'s.category_id = p.category_id', array("sub_category_name"=>'s.name'))
->join(array('c'=>'category'),'c.category_id = s.parent', array("category_name"=>'c.name'))
->join(array('p_w'=>'prod_warehouse'),'p_w.product_id = p.product_id', array("curent_stock"=>'p_w.curent_stock'))
->join(array('r'=>'review'),'p.product_id = r.product_id and r.status = 1', array("avg_review_rating"=>new Zend_Db_Expr('AVG(r.rating)'),"count_user_rating"=>new Zend_Db_Expr('COUNT(r.product_id)')))
->limit($limit, $start);
$list_select->where('s.status = 1 AND c.status = 1 AND p.status = 1 AND m.status = 1 AND p.product_id != "" AND p_w.status > 0');
$list_select->group('p.product_id');
$list_select->where('p.featured_product = 1');
$aData=$oDb->fetchall($list_select);
return $aData;
}
当我在上面执行时,它只获取具有评论率的产品,我还想获得没有评论评级的产品?
请帮助我。
答案 0 :(得分:1)
你必须做一个LEFT JOIN。使用$select->joinLeft()
->joinLeft(array('r'=>'review'),'p.product_id = r.product_id and r.status = 1', array("avg_review_rating"=>new Zend_Db_Expr('AVG(r.rating)'),"count_user_rating"=>new Zend_Db_Expr('COUNT(r.product_id)')))
join()
的默认Zend_Db_Select
方法假定您要执行INNER JOIN
。
答案 1 :(得分:0)
protected $ _user_profile =“user_profile”; //你的表名
protected $ _app_functionalities_profile =“app_functionalities_profile”; //其他表名
$ select = $ this-> select()
- > setIntegrityCheck(假)
- >从($这 - > _user_profile)
- >从($这 - > _app_functionalities_profile)
- 化合物其中( '?USER_PROFILE.user_id =',1)
- 化合物其中( 'USER_PROFILE.profile_id = app_functionalities_profile.profile_id');
$ userdata = $ this-> fetchAll($ select);
将此用于加入条件。您可以使用任何其他表格以及满足您要求的条件。