如何从一列不在另一列codeigniter中获取记录

时间:2012-01-13 09:06:10

标签: php mysql codeigniter

嗨,我正在使用codeigniter,我有一个像这样的表

enter image description here

我想获取PreferenceID在这种情况下,我也在使用PreferenceParentID。并且EntityID应该PreferenceParentID

假设我按!= 0 entityID

进行过滤

我的结果应该是

53

因为Couture , Denims 在两种情况下都不在PreferenceID。我试过PreferenceParentID但是做不到。请帮忙

这是我的查询

where_not_in()

我的查询结果是

    $table = $this->mastables['shop_profile_preferences'];
    $this->db->select('a.ProfilePreferenceID');
    $this->db->from($table." as a");

    $where2 = "(SELECT a.PreferenceParentID FROM ".$table.")";
    $this->db->where_not_in('a.PreferenceID', $where2);

    $this->db->where("a.EntityID",$shop_id);
    $this->db->where('a.PreferenceParentID !=',0);

    $query=$this->db->get();

    if($query->num_rows()>0)
    {
        return $query->result_array();
    }
    else
    {
        return FALSE;
    }

如何正确使用Array ( [0] => Array ( [ProfilePreferenceID] => 274 ) [1] => Array ( [ProfilePreferenceID] => 275 ) [2] => Array ( [ProfilePreferenceID] => 276 ) ) 。或ids有任何其他方法。请帮忙 ..... 提前谢谢。

更新

where_not_in()

1 个答案:

答案 0 :(得分:4)

你不能用CodeIgniter的where_not_in()做到这一点。因为第二个参数应该是一个数组而不是那样的字符串。

您可以使用通常的where()方法。

$this->db->where('a.PreferenceID NOT IN (SELECT a.PreferenceParentID FROM `table_name`)', NULL, FALSE);

如果您想知道,上面代码中的第三个参数是阻止CodeIgniter尝试使用反引号来保护字段和表名。