使用php和mysql从表中获取最新的值

使用php和mysql从表中获取最新的值,php,mysql,sql,codeigniter,codeigniter-2,Php,Mysql,Sql,Codeigniter,Codeigniter 2,我有下面的sql表结构,我试图使用codeigniter从两个表中获取值 table: salesman id sales_name ref_id 1 kevin 174 2 mike 574 3 nick 777 table: sales_report id salesman_id product purchased_date dispatched 1 2

我有下面的sql表结构,我试图使用codeigniter从两个表中获取值

table: salesman

id    sales_name     ref_id
1       kevin      174
2       mike       574
3       nick       777


table: sales_report

 id   salesman_id   product     purchased_date      dispatched 
 1    2             BF0214      04-November-2011        Yes
 2    2             CF0474      09-November-2011        No
 3    2             BF0111      10-November-2011        No
 4    3             BF0714      15-November-2011        Yes
 5    3             BF0435      15-November-2011        Yes
 6    2             BF0335      18-November-2011        Yes
 7    1             BF0714      22-November-2011        Yes
 8    1             BF0335      25-November-2011        Yes
我将销售人员id传递给模型,以获取并显示我视图中的值

我的html表格如下所示

Ref ID   |  Salesman Name  | Last product Sold | Sold Date  | Dispatched Status
我遇到的问题是,如何查询以从sales_表中获取sales_name和ref_id,并从sales_report表中获取最新的产品名称、发货和购买日期

例如:

使用

分组

订购人

要完成此操作

您需要使用sales\u报告中的值,sales\u名称和参考id中的值,purchased\u date DESC首先获取最新的,而不是最旧的,sales.id仅为每个sales返回一行

SELECT * FROM sales_report LEFT JOIN salesman ON sales_report.salesman_id = salesman.id ORDER BY purchased_date DESC GROUP BY salesman.id

您应该通过两个标准查找最后一个产品:其销售日期和id;因为有些产品可能一天就能卖出去。那么,试试这个-

SELECT s.ref_id, s.sales_name, sr.product, sr.purchased_date, sr.dispatched FROM salesman s
  JOIN (
    SELECT salesman_id, product, purchased_date, dispatched FROM (
      SELECT salesman_id, product, purchased_date, dispatched, IF(@salesman_id = salesman_id, @i := @i + 1, @i := 1) n, @salesman_id := salesman_id
        FROM sales_report, (SELECT @i:= 0, @salesman_id = NULL) vars
      ORDER BY salesman_id ASC, purchased_date DESC, id DESC) t
    WHERE t.n = 1
      ) sr
  ON s.id = sr.salesman_id;
SELECT s.ref_id, s.sales_name, sr.product, sr.purchased_date, sr.dispatched FROM salesman s
  JOIN (
    SELECT salesman_id, product, purchased_date, dispatched FROM (
      SELECT salesman_id, product, purchased_date, dispatched, IF(@salesman_id = salesman_id, @i := @i + 1, @i := 1) n, @salesman_id := salesman_id
        FROM sales_report, (SELECT @i:= 0, @salesman_id = NULL) vars
      ORDER BY salesman_id ASC, purchased_date DESC, id DESC) t
    WHERE t.n = 1
      ) sr
  ON s.id = sr.salesman_id;