加入表不起作用

时间:2014-10-18 08:42:25

标签: php codeigniter

我正在尝试将我的数据库查询转换为 codeigniter活动记录,但似乎无法以正确的方式正确处理它。

我做错了什么。

Error
Error Number: 1066
Not unique table/alias: 'user_group'
SELECT * FROM (`user_group`, `user`) JOIN `user_group` ON WHERE `ug`.`user_group_id` IS NULL AND `u`.`user_id` = '1'
Filename: C:\Xampp\htdocs\codeigniter-project\system\database\DB_driver.php
Line Number: 330

模型

public function getUser($user_id) {
   $this->db->select('*', 'ug.user_group', 'u.user');
   $this->db->from($this->db->dbprefix . 'user_group');
   $this->db->join('user_group');
   $this->db->where('ug.user_group_id');
   $this->db->from($this->db->dbprefix . 'user');
   $this->db->where('u.user_id', $user_id);
   $query = $this->db->get();

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

旧模式方式

public function getUser1($user_id) {
  $query = $this->db->query("SELECT *, (SELECT ug.name FROM `" . $this->db->dbprefix . "user_group` ug WHERE 
   ug.user_group_id = u.user_group_id) 
   AS user_group FROM `" . $this->db->dbprefix . 
   "user` u WHERE u.user_id = '" . (int)$user_id . "'");

  return $query->row_array();
 }

3 个答案:

答案 0 :(得分:0)

看起来你输入的语法错误了。请尝试使用以下代码

$this->db->select('user.*,user_group.name as user_group');
$this->db->from('user');
$this->db->join('user_group','user.user_group_id = user_group.user_group_id');
$this->db->where('user.user_id', $user_id);
$query = $this->db->get();

如果您对此查询有任何错误/问题,请告诉我。

希望这会对你有所帮助。

答案 1 :(得分:0)

也许你可以尝试以下.. “PHP Weblineindia”的回答几乎相同,但他们错过了db前缀。

$this->db->select('u.*, ug.name AS user_group');
$this->db->from($this->db->dbprefix . 'user u');
$this->db->join($this->db->dbprefix . 'user_group ug', 'ug.user_group_id = u.user_group_id');
$this->db->where('u.user_id', $user_id);
$query = $this->db->get();

未经测试的代码,仅基于我在您的问题中看到的内容。

答案 2 :(得分:0)

请使用此代码

 public function getUser($user_id) {

 $this->db->select(array('*', 'ug.user_group', 'u.user'));     
 $this->db->join($this->db->dbprefix .'user_group AS ug','ug.column = u.column','INNER');
 //please user column similar in both tables
 $this->db->from($this->db->dbprefix . 'user as u');
 $this->db->where('u.user_id', $user_id);
 $query = $this->db->get();

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

我希望这会对你有所帮助。