Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php codeigniter:联接中第二个表的单行_Php_Sql_Codeigniter - Fatal编程技术网

Php codeigniter:联接中第二个表的单行

Php codeigniter:联接中第二个表的单行,php,sql,codeigniter,Php,Sql,Codeigniter,我有两个表:user和payment 用户表有3条记录,在付款表中,每条记录都有2条付款记录。我想要用户最后一次付款的详细信息,但是没有得到3行,我只得到1行 $this->db->select('user.*, max(payment.create_at) as last_payment_at'); $this->db->from('user'); $this->db->join('payment','payment.user_id=user.id', 'l

我有两个表:
user
payment

用户
表有
3条记录
,在
付款
表中,每条记录都有
2条付款记录
。我想要用户最后一次付款的详细信息,但是没有得到3行,我只得到1行

$this->db->select('user.*, max(payment.create_at) as last_payment_at');
$this->db->from('user');
$this->db->join('payment','payment.user_id=user.id', 'left');
$this->db->order_by("user.id", "desc"); 
return $this->db->get()->result_object();
$this->db->select('user.*,max(payment.create_at)作为最后一次付款_at');//如果使用desc和limit 1,则不必将max(payment.create_at)用作最后一次付款
$this->db->from('user');
$this->db->join('payment','payment.user\u id=user.id','left');
$this->db->order_by(“user.id”,“desc”);//如果获得的是最大值,则可以省略此行
$this->db->limit(1);//db->get()->result_object();

尝试添加$this->db->group\u by(user.id);在你的return@JeremyC. 在order子句之前按工作分组,虽然我的不好,但忘记了这一点,将其添加到order子句之前,然后:D@JeremyC. 是的,但这不能解决问题;)你能添加sqlfiddle和你想要的输出吗这仍然只能得到他1行,他需要为每个用户得到1行(总共3行)3条记录就是一个例子…它可以是任何否…我想要用户列表…任何方式我得到我的答案…谢谢你的帮助。。。。。。
$this->db->select('user.*, max(payment.create_at) as last_payment_at'); // you do not have to use max(payment.create_at) as last_payment_at if you are using desc and limit 1
$this->db->from('user');
$this->db->join('payment','payment.user_id=user.id', 'left');
$this->db->order_by("user.id", "desc"); // you can omit this line if you are getting max value

$this->db->limit(1);  // <======= add limit for 1

return $this->db->get()->result_object();