Codeigniter:order子句中的列'id'是不明确的

时间:2011-12-14 18:33:07

标签: php mysql codeigniter activerecord

我正在使用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

有关

3 个答案:

答案 0 :(得分:9)

错误表示您尝试按多个表中使用的列名进行排序。使用包含要排序列的表的名称更新order_by语句。例如:

$this->db->order_by('atoms.id');

答案 1 :(得分:3)

您的idatommeta表中似乎都有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");