dongxiaowei_1234 2014-10-10 11:18 采纳率: 0%
浏览 30
已采纳

Codeigniter将2个表数据与id值的新列连接起来

I'm new to Codeigniter and PHP, just learning. I've searched for this but couldn't find the right answer. I have a table that contain some data, lets call it posts and in this table, each post have a category_id. I have another table called categories and in this table I have 2 columns: id and name.

I want to join the two tables that the result I'll get is the same as posts with another column called category_name that will be taken from categories.name. Just can't figure out how to do so.

This is what I was up to so far:

function getPostsWithByCategoryID($numberOfRows, $start, $categoryId)
{
    $this->db->select('*');
    $this->db->from('posts')->order_by('id','desc')->limit($numberOfRows, $start);
    $this->db->where('category_id', $categoryID);
    $this->db->join('categories', 'posts.category_id == categories.id');
    $query = $this->db->get();
    return $query->result_array();
}

Thanks in advance.

========================================================================

EDIT:

After trying Adrian Forsius answer:

function getPostsWithByCategoryID($numberOfRows, $start, $categoryId)
{
    $this->db->select('*, category.name AS category_name');
    $this->db->from('posts')->order_by('id','desc')->limit($numberOfRows, $start);
    $this->db->where('category_id', $categoryID);
    $this->db->join('categories', 'posts.category_id = categories.id');
    $query = $this->db->get();
    return $query->result_array();
}

I'm getting this error:

Error Number: 1054: Unknown column 'category.name' in 'field list'
SELECT *, `category`.`name` AS category_name
FROM (`posts`)
JOIN `categories` ON `posts`.`category_id` = `categories`.`id`
WHERE `category_id` IS NULL
ORDER BY `id` desc
LIMIT 20

====

EDIT 2:

So I found some mistakes in the code and fixed them, tried again, but still I get an error: (The mistakes were using $categoryID instead of $categoryId and select category.name instead of the true name of the table categories which is categories.name

Error Number: 1052: Column 'id' in order clause is ambiguous
SELECT *, `categories`.`name` AS category_name
FROM (`posts`)
JOIN `categories` ON `posts`.`category_id` = `categories`.`id`
WHERE `category_id` =  '3'
ORDER BY `id` desc
LIMIT 20
  • 写回答

3条回答 默认 最新

  • dtuct88226 2014-10-10 11:44
    关注

    This should do what you are looking for:

    function getPostsWithByCategoryID($numberOfRows, $start, $categoryId)
    {
        $this->db->select('*, categories.name AS category_name');
        $this->db->from('posts')->order_by('posts.id','desc')->limit($numberOfRows, $start);
        $this->db->where('category_id', $categoryId);
        $this->db->join('categories', 'posts.category_id = categories.id');
        $query = $this->db->get();
        return $query->result_array();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值