0
안녕하십니까. 가능한 모든 비즈니스를 수행하기 위해 joininner 문을 사용하는 곳에서 다음 쿼리를 사용합니다. 기업이 처음 만들어 질 때 만 1 종류 나머지 둘은 나머지 2 개 종류가 null의 경우 내가 어떻게 쿼리를 joininner 일을 할 수있다 지금null이 아닌 경우에는 Mysql JoinInner
public function searchBusinessByCategoryString($str = null, $city=null,$start,$perpage)
{
$select = $this->getDbTable()->getAdapter()->select();
$select->from('business as b', array('b.business_name','b.business_url','b.reviews_num','b.cat_id','b.business_id','b.rating','b.business_phone','b.business_add1','b.business_add2','b.x','b.y','b.photo_url'))
->joinInner('business_category as bc','b.cat_id = bc.cat_id',array('bc.cat_name'))
->joinInner('business_sub_category as bsc','b.sub_cat_id = bsc.b_sub_cat_id',array('bsc.b_subcat_name','bsc.b_sub_cat_id'))
->joinInner('business_sub_category as bsc2','b.sub_cat2_id = bsc2.b_sub_cat_id',array('bsc2.b_subcat_name','bsc2.b_sub_cat_id'))
->joinInner('business_sub_category as bsc3','b.sub_cat3_id = bsc3.b_sub_cat_id',array('bsc3.b_subcat_name','bsc3.b_sub_cat_id'))
->where("bsc.b_subcat_name like '".$str."%'")
->orWhere("bsc.b_subcat_name like '%".$str."'")
->orWhere("bsc.b_subcat_name= '".$str."'")
->orWhere("bsc2.b_subcat_name like '%".$str."'")
->orWhere("bsc2.b_subcat_name = '".$str."'")
->orWhere("bsc2.b_subcat_name like '".$str."%'")
->orWhere("bsc3.b_subcat_name like '%".$str."'")
->orWhere("bsc3.b_subcat_name = '".$str."'")
->orWhere("bsc3.b_subcat_name like '".$str."%'");
$result = $this->getDbTable()->getAdapter()->fetchAll($select);
return $result;
}
문제를 널 (null)로 유지됩니다 업데이트됩니다? 내 위의 문장은 빈 범주의 비즈니스가 있지만 빈 결과 이벤트를 반환합니다.
조인 조건을 완료하면됩니다. 초기 조건'b.sub_cat_id = bsc.b_sub_cat_id'를 사용하고 다른 2 개를 덧붙입니다 ('AND bsc.cat2 IS NOT NULL 그리고 bsc.cat3 IS NOT NULL') – MatRt
그래서 어디에 추가합니까? 두 번째 joininner 쿼리? – d3bug3r
조인 된 테이블이 NULL 값을 포함 할 수있는'innerJoin' 대신'leftJoin'을 사용하십시오. 'INNER JOIN'은 조건을 사용하여 테이블을 조인 할 것이고 조인 된 테이블에 null 값이있을 때 라인을 유지하지 않을 것입니다. 'LEFT JOIN (왼쪽 조인)'을 누르면이 줄을 계속 지킬 수 있습니다. – MatRt