我正在使用CodeIgniter的Active Record Classes,我正在使用以下代码检索错误:
$this->db->select("*");
$this->db->order_by("id");
$this->db->limit($limit, $offset);
$this->db->from("atoms");
$this->db->join("atommeta", "atommeta.atom_id = atoms.atom_id");
$query = $this->db->get();
它产生了这个错误:
Error Number: 1052
Column 'id' in order clause is ambiguous
SELECT * FROM (`atoms`) JOIN `atommeta` ON `atommeta`.`atom_id` = `atoms`.`atom_id` ORDER BY `id` LIMIT 10
Filename: /Applications/MAMP/htdocs/atom/models/atom_model.php
Line Number: 197
第197行:$query = $this->db->get();
为什么有任何想法?这似乎与order_by
答案 0 :(得分:9)
错误表示您尝试按多个表中使用的列名进行排序。使用包含要排序列的表的名称更新order_by
语句。例如:
$this->db->order_by('atoms.id');
答案 1 :(得分:3)
您的id
和atommeta
表中似乎都有atoms
列。由于您要加入这些表,因此需要指定要订购的列。
你会想要
$this->db->order_by("atoms.id");
或
$this->db->order_by("atommeta.id");
答案 2 :(得分:3)
您应该指定'是'属于哪个表。
$this->db->select("*");
$this->db->from("atoms");
$this->db->join("atommeta", "atommeta.atom_id = atoms.atom_id");
选择一个:
$this->db->order_by("atommeta.id");
或
$this->db->order_by("atoms.id");