0

こんにちは、考えられるすべてのビジネスを取得するために joininner ステートメントを使用する次のクエリがあります。ただし、ビジネスが初めて作成されると、1 つのカテゴリのみが更新され、残りの 2 つは null のままになります。

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;
    }

問題は、残りの 2 つのカテゴリが null の場合、joininner クエリを実行できないことです。上記のステートメントは、1 つのカテゴリを持つビジネスが存在するにもかかわらず、空の結果イベントを返します。

4

1 に答える 1