【问题标题】:Codeigniter: Column 'id' in order clause is ambiguousCodeigniter:订单子句中的列“id”不明确
【发布时间】:2012-01-20 12:59:38
【问题描述】:

我正在使用 CodeIgniter 的 Active Record 类,并且正在使用以下代码检索错误:

$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有关

【问题讨论】:

  • 因为列名'id'不明确... ... ...

标签: php mysql codeigniter activerecord


【解决方案1】:

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

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

【讨论】:

  • 留下它,以便遇到相同问题的其他人有解决方案:)
  • 不知道为什么别人已经回答了。
  • @Brogrammer 如果您查看发布答案的时间,您会发现它们彼此非常接近。就个人而言,我之所以回答是因为当我的答案完成并且我即将点击提交按钮时,我收到了已发布答案的通知。相反,Nobdisd 的回答正好比我早 15 秒,可以很容易地说我们同时回答了。所以,“为什么其他人在回答”,在最后一个答案后 9 分钟被告知,这是一个奇怪的问题
【解决方案2】:

您的atommetaatoms 表中似乎都有一个id 列。因为您要加入这些表,所以您需要指定要排序的列。

你会想要的

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

$this->db->order_by("atommeta.id");

【讨论】:

    【解决方案3】:

    您应该指定 'id' 所属的表。

    $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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-03
      • 2021-05-30
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      相关资源
      最近更新 更多