【问题标题】:Grab most recent values from table using php and mysql使用 php 和 mysql 从表中获取最新值
【发布时间】:2011-12-01 09:30:18
【问题描述】:

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

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

我将 salesman_id 传递给模型以获取并在我的视图中显示值。

我的html表格如下

Ref ID   |  Salesman Name  | Last product Sold | Sold Date  | Dispatched Status

我遇到的问题是如何查询从 salesman 表中获取 sales_name 和 ref_id 并从 sales_report 表中获取最新的产品名称、dispatch 和 purchase_date?

例如:

   Ref ID   |  Salesman Name  | Last product Sold |   Sold Date         | Dispatched Status
    174            kevin            BF0335            25-November-2011       Yes
    574            mike             BF0335            18-November-2011       Yes
    777            nick             BF0435            15-November-2011       Yes

【问题讨论】:

    标签: php mysql sql codeigniter codeigniter-2


    【解决方案1】:

    使用

    分组方式

    订购方式

    为了完成这项工作

    【讨论】:

      【解决方案2】:

      您需要使用sales_reportLEFT JOINsalesman 中的SELECT 值来获取sales_nameref_idORDER BYpurchased_date(通过DESC 获取最新的第一个而不是最旧的第一个),以及GROUP BY salesman.id 使其每个销售员只返回一行。

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

      【讨论】:

        【解决方案3】:

        您应该通过两个标准找到最后一个产品:它的销售日期和它的 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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-14
          • 2016-04-16
          • 1970-01-01
          • 2019-09-19
          • 1970-01-01
          相关资源
          最近更新 更多