SQL子查询在结果中查找类别

时间:2012-03-26 07:44:14

标签: php sql codeigniter

我从数据库表中获取了一些数据。我使用的查询非常简单

$query = $this->db->query("SELECT * 
                                FROM mc_boxes_has_categories 
                                WHERE mc_boxes_idmc_boxes = $box_id
                              ");
    $categories = $query->result_array();
    return $categories; 

此查询的输出是以下

Array
(
[0] => Array
    (
        [mc_boxes_idmc_boxes] => 12
        [categories_idcategories] => 1
    )

[1] => Array
    (
        [mc_boxes_idmc_boxes] => 12
        [categories_idcategories] => 4
    )

[2] => Array
    (
        [mc_boxes_idmc_boxes] => 12
        [categories_idcategories] => 5
    )

)

我的问题是如何检查类别是否包含类别ID 1然后呈现1个视图,如果它不包含则再渲染另一个视图。我需要检查类别ID 1以某种方式在sql中是否可能?

由于

2 个答案:

答案 0 :(得分:0)

如果您只想选择那些具有类别1的类别,请更改您的选择查询,如下所示:

$query = $this->db->query("SELECT * 
                                FROM mc_boxes_has_categories 
                                WHERE mc_boxes_idmc_boxes = $box_id AND   categories_idcategories = 1
                              ");

如果你想要选择所有类别,然后对id 1类别做一些不同的事情:

foreaach($categories as $category)
{
   if($category['categories_idcategories'] == 1)
   {
       // render view 1  
   }
   else
   {
       // render another view
   }
}

答案 1 :(得分:0)

您可以迭代并分组

foreach($categories as $row){
    $categories[$row['categories_idcategories']][] = $row['mc_boxes_idmc_boxes'];
}

// whatever compare logic you need
if(isset($categories[1][0])){

}