2016-03-07 76 views
0

我在codeigniter中加入两个表时遇到此错误。错误号:1064

Error Number: 1064 

You have an error in your SQL syntax; check the manual that 
corresponds to your MariaDB server version for the right syntax to use 
near '.`id = a`.`assignee_key where a`.`assigned_to="office" and 
user`.`id="53"`' at line 1 
select a`.* from address as `a LEFT JOIN user ON user`.`id = a`.`assignee_key where a`.`assigned_to="office" and user`.`id="53" 

$this->db->select('select a.* from address as a LEFT JOIN user ON user.id = a.assignee_key where a.assigned_to="office" and user.id="'.$user_id.'"'); 
$query = $this->db->get(); 
return $query->row(); 
+0

我猜想使用'AS'没有什么错误。 –

+0

似乎你缺少左'周围表名.. \'表名\'\'列名\' – diEcho

回答

0

你有别名表名的问题。试试这个

$this->db->select('select a.* from address a LEFT JOIN user u ON u.id = a.assignee_key where a.assigned_to="office" and u.id="'.$user_id.'"'); 
$query = $this->db->get(); 
return $query->row(); 
+0

谢谢,但还是我得到的错误:错误编号:1064 您的SQL语法错误。检查对应于您MariaDB的服务器版本使用附近的正确语法手册“.'assignee_key其中'a'.assigned_to =‘办公室’和'u'.'id =‘53’”在1号线 SELECT'选择a'.' *从地址左连接用户u ON u'.'id = a'.'assignee_key其中a'.assigned_to = “办公室” 和'u'.'id = “53”' –

+0

@Sunilkumarm是那assignee_key或assigned_key? – Yoshioka

+0

完全assignee_key。 –

0

你有两个选择。这是您的查询的更好/结构化版本。

$this->db->select("a.*") 
      ->from("address as a") 
      ->join("user","user.id = a.assignee_key","left") 
      ->where(array("a.assigned_to"=>"office","user.id"=>$user_id));   
    $query = $this->db->get(); 
    return $query->row(); 

更新:对于评论尽量左外连接

->join("user","user.id = a.assignee_key","left outer") 

它保留了不匹配的行从第一个(左)表中,第二个形状以空行加入他们(右)表。

+0

谢谢,没有错误。但我想显示的结果如果与user_ID的地址表中没有数据,也就是说,如果我没有在地址表中的user_id记录我需要显示空记录,但我越来越严重:注意 消息:试图让非财产-object –

+0

尝试左外侧代替左侧。 –

+0

我已经尝试了左外部,但得到相同的错误。 –