我需要像这样的查询
SELECT * FROM (`users`)
LEFT JOIN `users_phone_numbers`
ON `users`.`id`= `users_phone_numbers`.`user_id`
LEFT JOIN `phone_number`
ON (`phone_number`.`id`= `users_phone_numbers`.`phone_num_id` AND users_phone_numbers.is_active = 1)
WHERE `users`.`id` = 56
我在codeigniter中有这样的代码
$this->db->select('*');
$this->db->from('users');
$this->db->join('users_phone_numbers',
'users.id= users_phone_numbers.user_id',
'left');
$this->db->join('phone_number',
'(phone_number.id= users_phone_numbers.phone_num_id AND users_phone_numbers.is_active = 1)',
'left');
$this->db->where('users.id = '. $id);
$result = $q->result_array();
但我收到了这个错误
答案 0 :(得分:3)
如果您检查Codeigniter处理条件功能,您将看到以下内容:
// Strip apart the condition and protect the identifiers
if (preg_match('/([\w\.]+)([\W\s]+)(.+)/', $cond, $match))
Codeigniter正在从查询中删除左括号。你能否在WHERE子句中移动LEFT JOIN附加子句来解决这个问题?
编辑:
$this->db->select('*');
$this->db->from('users');
$this->db->join('users_phone_numbers',
'users.id= users_phone_numbers.user_id',
'left');
$this->db->join('phone_number',
'phone_number.id= users_phone_numbers.phone_num_id)',
'left');
$this->db->where(array('users.id => '. $id, 'users_phone_numbers.is_active' => 1));
$result = $q->result_array();
答案 1 :(得分:0)
您需要删除join
的第二个条件。
答案 2 :(得分:0)
$这 - > DB->加入( 'PHONE_NUMBER', 'phone_number.id = users_phone_numbers.phone_num_id AND users_phone_numbers.is_active = 1', '剩下');
删除上面的括号。当没有支架时它适用于我