如何合并两个相同的行并在codeiginter mysql中显示不同的id行

时间:2016-04-20 08:30:45

标签: mysql codeigniter

我这样的表

 id ,  user_id , product_id , product_name , sub_name , status
  1 ,     1    ,    001     ,    name1     ,  sub1,       1
  2 ,     1    ,    001     ,    name1     ,  sub2,       1
  3 ,     1    ,    002     ,    name2     ,  sub3,       1    

我想在我的视图页面中显示我的结果,如

 id , user_id , product_id , product_name , sub_name , status
  1 ,  1      ,  001     ,    name1     ,  sub1,       1
  3 ,  1      ,  002     ,    name2     ,  sub3,       1    

我的Sql查询

$data['product'] = $this->db->group_by('product_id')
            ->where(array('user_id' => $id, 'product_id' => $product_id))->get('sr_shortserials')->result();

但我得到了这样的

 id , user_id , product_id , product_name , sub_name , status
  3 ,  1      ,  002     ,    name2     ,  sub3,       1    

这一个好,但我想要id 1和3

1 个答案:

答案 0 :(得分:1)

我假设您希望使用最早的sub_name字段值显示表中的所有产品。

最好的方法是重构数据并将sub_name字段旋转到其单独的表中,因为当前数据结构在普通表单梯形图上不是太高。

但是查询的主要逻辑并不真正取决于sub_name是否是不同的表。您需要获取每个产品的最小ID(如果sub_names位于不同的表中,则为min sub_name id)并返回主表(单独的sub_names表)以获取正确的详细信息。

select t1.*
from yourtable t1
inner join 
     (select user_id, product_id, min(id) as minid
      from yourtable
      group by user_id, product_id) t2 on t1.id=t2.minid