从数据库Codeigniter中的连接表中选择一个列

时间:2015-06-21 14:15:16

标签: php mysql codeigniter

我正在尝试从表level_name中选择列名levels, 其中包含level_idlevel_name, 让用户知道他们的等级,

名为users且包含level_iduser_id的用户表, 但是我收到了这个错误 - >

列' level_id'在on子句中含糊不清

SELECT `level_name` 
 FROM `levels` 
   JOIN `users` ON `level_id` = `level_id` WHERE `user_id` = '9'

这里是模型中的代码

public function level_ownprofile($user_id)
{
    $this->db->select('level_name');
    $this->db->from('levels');
    $this->db->join('users', 'level_id = level_id');
    $this->db->where('user_id', $user_id);
    $query = $this->db->get();
    return  $query;
}

提前感谢:)

3 个答案:

答案 0 :(得分:1)

Select l.level_name 
FROM levels l
JOIN users u
ON u.level_id = l.level_id 
and u.user_id = '9'


public function level_ownprofile($user_id)
{
$this->db->select('level_name');
$this->db->from('levels');
$this->db->join('users', 'levels.level_id = users.level_id');
$this->db->where('user_id', $user_id);
$query = $this->db->get();
return  $query;
}

答案 1 :(得分:1)

将查询更改为

SELECT `level_name` 
 FROM `levels` l
   JOIN `users` u ON `u`.`level_id` = `l`.`level_id` 
 WHERE `user_id` = '9'

如果你喜欢表名别名方法,它会更短更容易阅读。

或者

SELECT `level_name` 
 FROM `levels` 
   JOIN `users` ON `users`.`level_id` = `levels`.`level_id` 
WHERE `user_id` = '9'

如果您希望在任何地方使用完整的表名。

由于两个表都包含名为level_id的列,因此查询分析器需要知道您正在寻址的是哪一个。

在codeigniter中尝试

public function level_ownprofile($user_id)
{
    $this->db->select('level_name');
    $this->db->from('levels l');
    $this->db->join('users u', 'u.level_id = l.level_id');
    $this->db->where('user_id', $user_id);
    $query = $this->db->get();
    return  $query;
}

答案 2 :(得分:1)

public function level_ownprofile($user_id)
{
    $this->db->select('l.level_name');
    $this->db->from('levels as l');
    $this->db->join('users as u', 'l.level_id = u.level_id');
    $this->db->where('l.user_id', $user_id);
    $query = $this->db->get();
    return $query->results();
}