【问题标题】:select from two tables (count , order by , group by) codeigniter从两个表中选择(count、order by、group by)codeigniter
【发布时间】:2012-11-16 12:12:02
【问题描述】:

我有一个 sql 命令,它可以工作,但我不能在 Codeigniter 中使用它,

当我在 phpmyadmin 中使用它时,它是有效的

选择 online_visitors.page_id , hotels.hotel_name , count(online_visitors.page_id) as count_visit FROM online_visitors , hotels WHERE online_visitors.page_type = 'hotel' AND online_visitors.is_bot = 0 AND hotels.ID = online_visitors.page_id 按 online_visitors.page_id 分组 按 online_visitors.page_id asc 排序

但是当我想在 codeigniter 代码中使用它时,我不能

$this->db->select("page_id , hotel_name");
$this->db->from("hotels");
$this->db->join("online_visitors");
$this->db->where("is_bot", 0);
$this->db->where("page_type", 'hotel');
$this->db->group_by("page_id");
$this->db->order_by("page_id");
$this->db->get();

【问题讨论】:

  • 您尝试过哪些调试可以提供给我们:)
  • 检查 ypur 查询,它没有加入。但是您正在尝试在 CI 中使用它。

标签: php codeigniter


【解决方案1】:

您可以通过使用带有联接的 CodeIgniter 活动记录来尝试此操作

    $this->db->select('ov.page_id , h.hotel_name, count(ov.page_id) as count_visit ');
    $this->db->from('online_visitors as ov');
    $this->db->join('hotels as h','h.ID = ov.page_id');
    $this->db->where('ov.page_type','hotel');
    $this->db->where('ov.is_bot',0);
    $this->db->group_by('ov.page_id');
    $this->db->order_by('ov.page_id',"asc");
    $this->db->get();

【讨论】:

  • 这是最正确的方法...只使用别名而不是完整的表名。
【解决方案2】:

你可以通过上面提到的两种方法来做到这一点

$query=$this->db->query(
'SELECT online_visitors.page_id , hotels.hotel_name , count(online_visitors.page_id) as count_visit FROM online_visitors , hotels WHERE online_visitors.page_type = 'hotel' AND online_visitors.is_bot = 0 AND hotels.ID = online_visitors.page_id group by online_visitors.page_id order by online_visitors.page_id asc'
);

你可以访问$query作为对象

或者你可以使用Active Record 分解它

【讨论】:

  • 废话我从来没有读过他的问题......是的,Active Record 在连接方面很糟糕,像这样手动执行!
  • 你可以启用配置文件 $this->output->enable_profiler();查看从代码到 MYSQL 生成的查询是什么
【解决方案3】:
$this->db->select("online_visitors.page_id , 
hotels.hotel_name,count(online_visitors.page_id) as count_visit");

$this->db>where("online_visitors.page_type = 'hotel'");
$this->db>where("online_visitors.is_bot = 0");
$this->db>where("hotels.ID = online_visitors.page_id");
$this->db->group_by("online_visitors.page_id");
$this->db->order_by("online_visitors.page_id", "asc");

【讨论】:

    猜你喜欢
    • 2019-01-27
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    相关资源
    最近更新 更多