2016-08-03 61 views
1

我想从表'invoice_data'中选择数据,其中公司名称的值将根据电子邮件的值从表'crm_accounts'中选择。我收到错误,如非法混合排序操作'='

归类(utf8_unicode_ci,隐含的)和(utf8_general_ci,隐含的)操作的非法混合 '='

这是我的模型代码:

public function view_invoice($email) 
    { 
     $this->db->select('invoice_data.*, crm_accounts.company'); 
     $this->db->from('invoice_data'); 
     $this->db->join('crm_accounts', 'invoice_data.cname = crm_accounts.company', 'inner'); 
     $this->db->where('crm_accounts.email', $email); 
     $query = $this->db->get(); 
     return $query->result_array(); 
    } 
+0

看起来像你的表有不同的排序规则 – Jens

+0

对不起,我不明白这是什么意思? –

+0

你的桌子有不同的编码 – Jens

回答

1

试试这个;

public function view_invoice($email) 
{ 
    $this->db->select('invoice_data.*, crm_accounts.company'); 
    $this->db->from('invoice_data'); 
    $this->db->join('crm_accounts', 'invoice_data.cname = crm_accounts.company COLLATE utf8_unicode_ci', 'inner'); 
    $this->db->where('crm_accounts.email', $email); 
    $query = $this->db->get(); 
    return $query->result_array(); 
} 
+0

你能描述吗? –

+0

我添加了“COLLATE utf8_unicode_ci”,以便crm_accounts.company的排序规则与invoice_data.cname的排序规则匹配。两个表的排序规则看起来不同,SQL无法比较不同的排序规则,而无需解析其中的一个排序规则。 – Dennisvdh

+0

明白了。谢谢。 –

相关问题